Changeset 11405

Show
Ignore:
Timestamp:
05/11/08 22:25:07 (5 years ago)
Author:
daisuke_m
Message:

まだ上手く行かないが、ステート保存の枠組みはこんな感じになるのかな、と...。

Location:
lang/java/sabotter/trunk
Files:
4 added
9 modified

Legend:

Unmodified
Added
Removed
  • lang/java/sabotter/trunk/.classpath

    r10237 r11405  
    1414        <classpathentry kind="lib" path="lib/commons-httpclient-3.0.1.jar"/> 
    1515        <classpathentry kind="lib" path="lib/commons-logging-1.0.3.jar"/> 
     16        <classpathentry kind="lib" path="lib/xpp3_min-1.1.4c.jar"/> 
     17        <classpathentry kind="lib" path="lib/xstream-1.3.jar"/> 
     18        <classpathentry kind="lib" path="lib/commons-lang-2.4.jar" sourcepath="lib/sources/commons-lang-2.4-sources.jar"/> 
    1619        <classpathentry kind="output" path="bin"/> 
    1720</classpath> 
  • lang/java/sabotter/trunk/META-INF/MANIFEST.MF

    r10588 r11405  
    1919 lib/commons-codec-1.2.jar, 
    2020 lib/commons-httpclient-3.0.1.jar, 
    21  lib/commons-logging-1.0.3.jar 
     21 lib/commons-logging-1.0.3.jar, 
     22 lib/xpp3_min-1.1.4c.jar, 
     23 lib/xstream-1.3.jar, 
     24 lib/commons-lang-2.4.jar 
    2225Export-Package: jp.xet.eclipse.sabotter, 
    2326 jp.xet.eclipse.sabotter.action, 
  • lang/java/sabotter/trunk/build.properties

    r10363 r11405  
    1717               LICENSE.txt,\ 
    1818               plugin.properties,\ 
    19                plugin_ja.properties 
     19               plugin_ja.properties,\ 
     20               lib/xpp3_min-1.1.4c.jar,\ 
     21               lib/xstream-1.3.jar,\ 
     22               lib/commons-lang-2.4.jar 
    2023src.includes = .classpath,\ 
    2124               .project,\ 
  • lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/action/AddTabAction.java

    r11291 r11405  
    11package jp.xet.eclipse.sabotter.action; 
    22 
     3import jp.xet.eclipse.sabotter.filters.TimeLineFilter; 
    34import jp.xet.eclipse.sabotter.manager.TableManager; 
    45import jp.xet.eclipse.sabotter.manager.TwitterManager; 
     
    910import jp.xet.eclipse.sabotter.views.SabotterTabModel; 
    1011import jp.xet.eclipse.sabotter.views.SabotterView; 
     12import jp.xet.eclipse.sabotter.views.TimeLineSorter; 
     13 
    1114import org.eclipse.jface.action.Action; 
    1215import org.eclipse.jface.dialogs.IInputValidator; 
     
    2528import org.eclipse.swt.events.DisposeEvent; 
    2629import org.eclipse.swt.events.DisposeListener; 
    27 import org.eclipse.swt.events.TraverseEvent; 
    28 import org.eclipse.swt.events.TraverseListener; 
    2930import org.eclipse.swt.layout.GridData; 
    3031import org.eclipse.swt.widgets.Table; 
     
    136137                        viewer.getTable().addKeyListener( 
    137138                                        new SabotterKeyListener(new TableManager(viewer))); 
    138                         viewer.getTable().addTraverseListener(new TraverseListener() { 
    139                                  
    140                                 public void keyTraversed(TraverseEvent e) { 
    141                                         // TODO Auto-generated method stub 
    142                                         System.out.println("TraverseEvent: " + e); 
    143                                          
    144                                 } 
    145                                  
    146                         }); 
     139                         
     140                        TimeLineFilter[] filters = tab.getFilters(); 
     141                        if (filters != null) { 
     142                                viewer.setFilters(filters); 
     143                        } 
     144                        TimeLineSorter sorter = tab.getSorter(); 
     145                        if (sorter != null) { 
     146                                viewer.setSorter(sorter); 
     147                        } 
    147148                         
    148149                        tab.getTabItem().setControl(viewer.getTable()); 
     
    165166         * @param tab 
    166167         */ 
    167         public static void initTable(SabotterTabModel tab) { 
     168        public void initTable(SabotterTabModel tab) { 
    168169                Table table = tab.getViewer().getTable(); 
    169170                TableLayout layout = new TableLayout(); 
     
    174175                 
    175176                ColumnLayoutData[] columnLayouts = 
    176                                 getColumnLayouts(DEFAULT_COLUMN_LAYOUTS); 
     177                                getColumnLayouts(tab, DEFAULT_COLUMN_LAYOUTS); 
    177178                 
    178179                for (int i = 0; i < columnLayouts.length; i++) { 
     
    183184                name.setText(Messages.col_name); 
    184185                name.addSelectionListener(new ColumnHeaderSelectionListener(tab)); 
    185                 name.addControlListener(new ColumnSizeListener()); 
     186                name.addControlListener(new ColumnSizeListener(view)); 
    186187                 
    187188                TableColumn message = new TableColumn(table, SWT.NULL); 
    188189                message.setText(Messages.col_message); 
    189190                message.addSelectionListener(new ColumnHeaderSelectionListener(tab)); 
    190                 message.addControlListener(new ColumnSizeListener()); 
     191                message.addControlListener(new ColumnSizeListener(view)); 
    191192                 
    192193                TableColumn time = new TableColumn(table, SWT.NULL); 
    193194                time.setText(Messages.col_time); 
    194195                time.addSelectionListener(new ColumnHeaderSelectionListener(tab)); 
    195                 time.addControlListener(new ColumnSizeListener()); 
    196         } 
    197          
    198         private static ColumnLayoutData[] getColumnLayouts(ColumnPixelData[] data) { 
     196                time.addControlListener(new ColumnSizeListener(view)); 
     197        } 
     198         
     199        private static ColumnLayoutData[] getColumnLayouts(SabotterTabModel tab, 
     200                        ColumnPixelData[] data) { 
    199201                ColumnPixelData[] result = new ColumnPixelData[data.length]; 
    200202                for (int i = 0; i < data.length; i++) { 
    201203                        int width = data[i].width; 
     204                        // FIXME ないわー。なさすぎる。どんな実装だこれ。仮実装にしたって無いだろこれw やばいって俺w 
     205                        int tmpWidth = 0; 
     206                        switch (i) { 
     207                                case 0: 
     208                                        tmpWidth = tab.getColumnSize(Messages.col_name); 
     209                                        break; 
     210                                case 1: 
     211                                        tmpWidth = tab.getColumnSize(Messages.col_message); 
     212                                        break; 
     213                                case 2: 
     214                                        tmpWidth = tab.getColumnSize(Messages.col_time); 
     215                                        break; 
     216                                default: 
     217                        } 
     218                        if (tmpWidth != 0) { 
     219                                width = tmpWidth; 
     220                        } 
    202221                        result[i] = new ColumnPixelData(width); 
    203222                } 
  • lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/preferences/SabotterPreference.java

    r11395 r11405  
    66 
    77/** 
    8  * 設定の読み出しクラス 
     8 * 設定の読み出しinterface 
    99 *  
    1010 * @author daisuke 
     
    153153        Color getUnreadStatusBackgroundColor(); 
    154154         
     155        void setTabState(String xml); 
     156         
     157        String getTabState(); 
     158         
    155159} 
  • lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/preferences/SabotterPreferenceImpl.java

    r11395 r11405  
    242242        } 
    243243         
     244        public void setTabState(String xml) { 
     245                ps.setValue("TAB_STATE", xml); 
     246        } 
     247         
     248        public String getTabState() { 
     249                return ps.getString("TAB_STATE"); 
     250        } 
     251         
    244252} 
  • lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/views/ColumnSizeListener.java

    r11291 r11405  
    1212public class ColumnSizeListener extends ControlAdapter { 
    1313         
     14        private SabotterView view; 
     15         
     16 
     17        /** 
     18         * コンストラクタ。 
     19         *  
     20         * @param view 
     21         */ 
     22        public ColumnSizeListener(SabotterView view) { 
     23                this.view = view; 
     24                 
     25        } 
     26         
    1427        /** 
    1528         * Override. 
     
    2134                TableColumn column = (TableColumn) e.widget; 
    2235                int width = column.getWidth(); 
    23                 System.out.println("controlResized:" + e + " - " + width); // TODO 
     36                // FIXME Textをキーにしてるのがイケてない。 
     37                view.getCurrentTab().setColumnSize(column.getText(), width); 
    2438        } 
    2539         
  • lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/views/SabotterTabModel.java

    r11281 r11405  
    11package jp.xet.eclipse.sabotter.views; 
     2 
     3import java.util.HashMap; 
     4import java.util.Map; 
    25 
    36import jp.xet.eclipse.sabotter.filters.TimeLineFilter; 
    47 
     8import org.apache.commons.lang.builder.ToStringBuilder; 
    59import org.eclipse.jface.viewers.TableViewer; 
    610import org.eclipse.swt.custom.CTabItem; 
     
    2731         
    2832        private TimeLineSorter sorter; 
     33         
     34        private Map<String, Integer> columnSizes = new HashMap<String, Integer>(); 
    2935         
    3036 
     
    9298        } 
    9399         
     100        public int getColumnSize(String key) { 
     101                Integer size = getColumnSizes().get(key); 
     102                return size == null ? 0 : size; 
     103        } 
     104         
     105        public void setColumnSize(String key, int columnSize) { 
     106                getColumnSizes().put(key, columnSize); 
     107        } 
     108         
     109        public Map<String, Integer> getColumnSizes() { 
     110                if (columnSizes == null) { 
     111                        columnSizes = new HashMap<String, Integer>(); 
     112                } 
     113                return columnSizes; 
     114        } 
     115         
     116        @Override 
     117        public String toString() { 
     118                return ToStringBuilder.reflectionToString(this); 
     119        } 
    94120} 
  • lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/views/SabotterView.java

    r11312 r11405  
    7373import org.eclipse.ui.part.ViewPart; 
    7474 
     75import com.thoughtworks.xstream.XStream; 
     76 
    7577/** 
    7678 * さぼったービュー(一番メインとなっているクラス) 
     
    226228         */ 
    227229        public SabotterView() { 
    228                 // TODO ステート読み出し 
     230                try { 
     231                        List<SabotterTabModel> tabs = loadTabState(); 
     232                        if (tabs != null) { 
     233                                this.tabs = tabs; 
     234                        } 
     235                } catch (Exception e) { 
     236                        SabotterPlugin.handleException(e, SabotterPlugin.LOG); 
     237                } 
    229238        } 
    230239         
     
    236245        @Override 
    237246        public void dispose() { 
    238                 // TODO ステート保存 
     247                // FIXME このようにしたい。が、この時点で全てのtabはdispose済み、tabs.size() == 0 であるorz 
     248                saveTabState(); 
    239249                super.dispose(); 
     250        } 
     251         
     252        private List<SabotterTabModel> loadTabState() { 
     253                String xml = pref.getTabState(); 
     254                System.out.println("====load start========"); 
     255                System.out.println(xml); 
     256                System.out.println("====load end=========="); 
     257                XStream xstream = new XStream(); 
     258                return (List<SabotterTabModel>) xstream.fromXML(xml); 
     259        } 
     260         
     261        private void saveTabState() { 
     262                XStream xstream = new XStream(); 
     263                String xml = xstream.toXML(tabs); 
     264                System.out.println("====save start========"); 
     265                System.out.println(xml); 
     266                System.out.println("====save end=========="); 
     267                pref.setTabState(xml); 
    240268        } 
    241269