Changeset 12483 for lang/java/sabotter/trunk/src/jp/xet
- Timestamp:
- 05/27/08 01:41:55 (5 years ago)
- Location:
- lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter
- Files:
-
- 2 added
- 8 modified
-
SabotterPlugin.java (modified) (5 diffs)
-
action/AddTabAction.java (modified) (2 diffs)
-
action/FilterSettingAction.java (modified) (5 diffs)
-
action/dialog/FilterDialog.java (modified) (7 diffs)
-
action/dialog/FilterDialogMemento.java (modified) (2 diffs)
-
action/dialog/FilterSet.java (added)
-
filters/FilterResolver.java (modified) (1 diff)
-
views/SabotterState.java (added)
-
views/SabotterTabModel.java (modified) (4 diffs)
-
views/SabotterView.java (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/SabotterPlugin.java
r11933 r12483 3 3 import java.net.URL; 4 4 5 import jp.xet.eclipse.sabotter.filters.FilterResolver; 5 6 import jp.xet.eclipse.sabotter.preferences.SabotterPreference; 6 7 import jp.xet.eclipse.sabotter.preferences.SabotterPreferenceImpl; … … 55 56 private static SabotterPreference pref; 56 57 58 private static FilterResolver resolver; 59 57 60 58 61 /** … … 72 75 plugin = this; 73 76 pref = new SabotterPreferenceImpl(); 77 resolver = new FilterResolver(); 74 78 } 75 79 … … 81 85 @Override 82 86 public void stop(BundleContext context) throws Exception { 87 resolver = null; 83 88 pref = null; 84 89 plugin = null; … … 102 107 public static SabotterPreference getPreference() { 103 108 return pref; 109 } 110 111 public static FilterResolver getFilterResolver() { 112 return resolver; 104 113 } 105 114 -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/action/AddTabAction.java
r11933 r12483 1 1 package jp.xet.eclipse.sabotter.action; 2 2 3 import java.util.Set; 4 3 import jp.xet.eclipse.sabotter.action.dialog.FilterSet; 5 4 import jp.xet.eclipse.sabotter.filters.TimeLineFilter; 6 5 import jp.xet.eclipse.sabotter.manager.TableManager; … … 153 152 new SabotterKeyListener(new TableManager(viewer))); 154 153 155 Set<TimeLineFilter> filters = tab.getFilters();156 if (filter s == null || filters.size() == 0) {154 FilterSet filterSet = tab.getFilterSet(); 155 if (filterSet == null) { 157 156 viewer.setFilters(new TimeLineFilter[0]); 158 157 } else { 159 viewer.setFilters(filter s.toArray(new TimeLineFilter[0]));158 viewer.setFilters(filterSet.getFilterArray()); 160 159 } 161 160 TimeLineSorter sorter = tab.getSorter(); -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/action/FilterSettingAction.java
r12010 r12483 1 1 package jp.xet.eclipse.sabotter.action; 2 2 3 import java.util.Set;4 5 3 import jp.xet.eclipse.sabotter.action.dialog.FilterDialog; 4 import jp.xet.eclipse.sabotter.action.dialog.FilterSet; 6 5 import jp.xet.eclipse.sabotter.action.dialog.Memento; 7 import jp.xet.eclipse.sabotter.filters.FilterResolver;8 import jp.xet.eclipse.sabotter.filters.TimeLineFilter;9 6 import jp.xet.eclipse.sabotter.views.SabotterView; 10 7 import org.eclipse.jface.action.Action; … … 23 20 private SabotterView view; 24 21 25 private FilterResolver resolver;26 27 22 28 23 /** … … 34 29 public FilterSettingAction(SabotterView view) { 35 30 this.view = view; 36 this.resolver = new FilterResolver();37 31 } 38 32 … … 44 38 @Override 45 39 public void run() { 46 TimeLineFilter[] filters = 47 editFilter(view.getCurrentTab().getFilters()); 48 49 view.getCurrentTab().setFilters(filters); 40 FilterSet filters = editFilter(view.getCurrentTab().getFilterSet()); 41 view.getCurrentTab().setFilterSet(filters); 50 42 } 51 43 52 private TimeLineFilter[] editFilter(Set<TimeLineFilter> filters) {53 FilterDialog dialog = new FilterDialog(null, filter s, resolver);44 private FilterSet editFilter(FilterSet filterSet) { 45 FilterDialog dialog = new FilterDialog(null, filterSet); 54 46 55 47 // 編集前のスナップショットを保存 … … 60 52 } 61 53 62 return dialog.getFilter s();54 return dialog.getFilterSet(); 63 55 } 64 56 } -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/action/dialog/FilterDialog.java
r11875 r12483 1 1 package jp.xet.eclipse.sabotter.action.dialog; 2 2 3 import java.util.HashMap;4 import java.util.HashSet;5 3 import java.util.Map; 6 import java.util.Set;7 4 5 import jp.xet.eclipse.sabotter.SabotterPlugin; 8 6 import jp.xet.eclipse.sabotter.filters.FilterResolver; 9 import jp.xet.eclipse.sabotter.filters.TimeLineFilter;10 11 7 import org.eclipse.core.runtime.IConfigurationElement; 12 8 import org.eclipse.jface.dialogs.Dialog; … … 28 24 public class FilterDialog extends Dialog { 29 25 30 public class FilterSet {31 32 private Map<String, TimeLineFilter> filterMap =33 new HashMap<String, TimeLineFilter>();34 35 private Set<String> enabledFilterIds = new HashSet<String>();36 37 38 /**39 * コンストラクタ。40 * @param filters41 * @category instance creation42 */43 public FilterSet(Set<TimeLineFilter> filters) {44 for (TimeLineFilter filter : filters) {45 String filterId = filter.getClass().getName();46 filterMap.put(filterId, filter);47 enabledFilterIds.add(filterId);48 }49 }50 51 /**52 * フィルタの有効/無効化を行う。53 *54 * @param filterId55 * @param enable56 */57 public void setEnable(String filterId, boolean enable) {58 if (enable) {59 enabledFilterIds.add(filterId);60 if (filterMap.get(filterId) == null) {61 filterMap.put(filterId, resolver62 .getFilterInstance(filterId));63 }64 } else {65 enabledFilterIds.remove(filterId);66 }67 }68 69 /**70 * フィルタが現在有効かどうかを調べる。71 *72 * @param filterId73 * @return 有効であれば<code>true</code>74 */75 public boolean isEnable(String filterId) {76 return filterMap.keySet().contains(filterId);77 }78 79 /**80 * 結果を取得する。81 *82 * @return フィルタの配列83 */84 public TimeLineFilter[] getFilters() {85 Set<TimeLineFilter> result = new HashSet<TimeLineFilter>();86 for (Map.Entry<String, TimeLineFilter> e : filterMap.entrySet()) {87 if (enabledFilterIds.contains(e.getKey())) {88 result.add(e.getValue());89 }90 }91 return result.toArray(new TimeLineFilter[0]);92 }93 94 public Map<String, TimeLineFilter> getFilterMap() {95 return filterMap;96 }97 98 /**99 * @param filterId100 * @return101 */102 public TimeLineFilter getFilter(String filterId) {103 return filterMap.get(filterId);104 }105 106 /**107 * @param filterId108 * @param filter109 */110 public void setFilter(String filterId, TimeLineFilter filter) {111 filterMap.put(filterId, filter);112 }113 114 }115 116 117 26 private FilterSet filterSet; 118 119 private FilterResolver resolver;120 121 private TimeLineFilter[] result;122 27 123 28 … … 126 31 * 127 32 * @param shell 128 * @param filters 129 * @param resolver 33 * @param filterSet 130 34 */ 131 public FilterDialog(Shell shell, Set<TimeLineFilter> filters, 132 FilterResolver resolver) { 35 public FilterDialog(Shell shell, FilterSet filterSet) { 133 36 super(shell); 134 37 setShellStyle(getShellStyle() | SWT.RESIZE); 135 this.filterSet = new FilterSet(filters); 136 this.resolver = resolver; 38 this.filterSet = filterSet; 137 39 } 138 40 … … 146 48 Shell shell = getShell(); 147 49 shell.pack(); 148 // shell.setSize(400, shell.getSize().y);149 50 } 150 51 … … 162 63 composite.setLayoutData(new GridData(GridData.FILL_BOTH)); 163 64 65 final FilterResolver resolver = SabotterPlugin.getFilterResolver(); 164 66 Map<String, IConfigurationElement> factoryMap = 165 67 resolver.getFilterFactories(); … … 207 109 } 208 110 209 /**210 * Override method.211 *212 * @see org.eclipse.jface.dialogs.Dialog#okPressed()213 */214 @Override215 protected void okPressed() {216 result = filterSet.getFilters();217 super.okPressed();218 }219 220 111 public Memento createMemento() { 221 112 return new FilterDialogMemento(filterSet); … … 224 115 public void setMemento(Memento memento) { 225 116 FilterDialogMemento filterMemento = (FilterDialogMemento) memento; 226 result = filterMemento.getFilters();117 filterSet = filterMemento.getFilters(); 227 118 } 228 119 229 public TimeLineFilter[] getFilters() {230 return result;120 public FilterSet getFilterSet() { 121 return filterSet; 231 122 } 232 123 -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/action/dialog/FilterDialogMemento.java
r11827 r12483 1 1 package jp.xet.eclipse.sabotter.action.dialog; 2 3 import jp.xet.eclipse.sabotter.action.dialog.FilterDialog.FilterSet;4 import jp.xet.eclipse.sabotter.filters.TimeLineFilter;5 2 6 3 /** … … 30 27 * @return filters 31 28 */ 32 public TimeLineFilter[] getFilters() { 33 return this.filterSet.getFilterMap().values().toArray( 34 new TimeLineFilter[0]); 29 public FilterSet getFilters() { 30 return filterSet; 35 31 } 36 32 } -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/filters/FilterResolver.java
r11827 r12483 74 74 75 75 public String getFilterName(String filterId) { 76 return filterFactories.get(filterId).getAttribute(ATTR_NAME); 76 IConfigurationElement factory = filterFactories.get(filterId); 77 String name = factory.getAttribute(ATTR_NAME); 78 return name; 77 79 } 78 80 79 81 public boolean hasSettings(String filterId) { 80 return filterFactories.get(filterId).getAttribute(81 ATTR_SETTING_DIALOG_CLASS) != null;82 IConfigurationElement factory = filterFactories.get(filterId); 83 return factory.getAttribute(ATTR_SETTING_DIALOG_CLASS) != null; 82 84 } 83 85 84 86 public FilterSettingDialog getSettingDialog(String filterId) { 85 IConfigurationElement element= filterFactories.get(filterId);86 if ( element== null) {87 IConfigurationElement factory = filterFactories.get(filterId); 88 if (factory == null) { 87 89 return null; 88 90 } 89 91 try { 90 return (FilterSettingDialog) element92 return (FilterSettingDialog) factory 91 93 .createExecutableExtension(ATTR_SETTING_DIALOG_CLASS); 92 94 } catch (CoreException e) { -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/views/SabotterTabModel.java
r11897 r12483 2 2 3 3 import java.util.HashMap; 4 import java.util.HashSet;5 4 import java.util.Map; 6 import java.util.Set; 7 8 import jp.xet.eclipse.sabotter.filters.SearchFilter; 9 import jp.xet.eclipse.sabotter.filters.TimeLineFilter; 10 5 import jp.xet.eclipse.sabotter.action.dialog.FilterSet; 11 6 import org.apache.commons.lang.builder.ToStringBuilder; 12 7 import org.eclipse.jface.viewers.TableViewer; … … 31 26 private String tabName; 32 27 33 private Set<TimeLineFilter> filterSet = new HashSet<TimeLineFilter>();28 private FilterSet filterSet; 34 29 35 30 private TimeLineSorter sorter; … … 47 42 public SabotterTabModel(String tabName) { 48 43 this.tabName = tabName; 44 // FIXME ここで毎回resolver newが微妙。 45 this.filterSet = new FilterSet(); 49 46 } 50 47 … … 84 81 } 85 82 86 public SearchFilter getSearchFilter() { 87 SearchFilter result = null; 88 for (TimeLineFilter filter : filterSet) { 89 if (filter instanceof SearchFilter) { 90 result = (SearchFilter) filter; 91 break; 92 } 93 } 94 return result; 83 public FilterSet getFilterSet() { 84 return filterSet; 95 85 } 96 86 97 public SearchFilter removeSearchFilter() { 98 SearchFilter toRemove = getSearchFilter(); 99 filterSet.remove(toRemove); 100 viewer.setFilters(filterSet.toArray(new TimeLineFilter[0])); 101 return toRemove; 102 } 103 104 public void addSearchFilter(SearchFilter filter) { 105 if (filter == null) { 106 return; 107 } 108 filterSet.add(filter); 109 viewer.setFilters(filterSet.toArray(new TimeLineFilter[0])); 110 } 111 112 public Set<TimeLineFilter> getFilters() { 113 if (filterSet == null) { 114 filterSet = new HashSet<TimeLineFilter>(); 115 } 116 Set<TimeLineFilter> result = new HashSet<TimeLineFilter>(filterSet); 117 result.remove(getSearchFilter()); 118 return result; 119 } 120 121 public void setFilters(TimeLineFilter[] filters) { 122 SearchFilter sf = getSearchFilter(); 123 this.filterSet.clear(); 124 if (filters != null) { 125 for (TimeLineFilter filter : filters) { 126 this.filterSet.add(filter); 127 } 128 } 129 this.filterSet.add(sf); 130 viewer.setFilters(this.filterSet.toArray(new TimeLineFilter[0])); 87 public void setFilterSet(FilterSet filters) { 88 this.filterSet = filters; 89 viewer.setFilters(this.filterSet.getFilterArray()); 131 90 } 132 91 -
lang/java/sabotter/trunk/src/jp/xet/eclipse/sabotter/views/SabotterView.java
r12078 r12483 2 2 3 3 import java.net.MalformedURLException; 4 import java.util.ArrayList;5 4 import java.util.HashMap; 6 5 import java.util.HashSet; … … 102 101 private CTabFolder tabFolder; 103 102 104 /** 各タブ */ 105 private List<SabotterTabModel> tabs = new ArrayList<SabotterTabModel>(); 103 private SabotterState state = new SabotterState(); 106 104 107 105 private Label detailImage; … … 153 151 public void run() { 154 152 SabotterPlugin.log(org.eclipse.core.runtime.Status.INFO, 155 0, "Sabotter: start to add entries to table"); // $NON-NLS-1$ 156 for (SabotterTabModel tab : tabs) { 153 0, "Sabotter: start to add " + toAdd.size() 154 + " entries to table"); // $NON-NLS-1$ 155 for (SabotterTabModel tab : getTabs()) { 157 156 TableViewer viewer = tab.getViewer(); 158 157 viewer.remove(toRemove.toArray(new SabotterEntry[0])); … … 203 202 public SabotterView() { 204 203 try { 205 List<SabotterTabModel> tabs= loadTabState();206 if ( tabs!= null) {207 this. tabs = tabs;204 SabotterState state = loadTabState(); 205 if (state != null) { 206 this.state = state; 208 207 } 209 208 } catch (Exception e) { … … 212 211 } 213 212 214 private List<SabotterTabModel>loadTabState() {213 private SabotterState loadTabState() { 215 214 String xml = pref.getTabState(); 216 return (List<SabotterTabModel>) new XStream().fromXML(xml); 215 SabotterState result = null; 216 try { 217 result = (SabotterState) new XStream().fromXML(xml); 218 } catch (Exception ignore) { 219 } 220 return result; 217 221 } 218 222 … … 224 228 */ 225 229 public void saveTabState() { 226 String xml = new XStream().toXML( tabs);230 String xml = new XStream().toXML(state); 227 231 pref.setTabState(xml); 228 232 } … … 246 250 setDetail((SabotterEntry) selection.getFirstElement()); 247 251 248 for (SabotterTabModel tab : tabs) {252 for (SabotterTabModel tab : getTabs()) { 249 253 TableViewer viewerToRefresh = tab.getViewer(); 250 254 viewerToRefresh.refresh(); … … 310 314 311 315 txtSearch.addKeyListener(new AllTextSelectionAdapter(txtSearch)); 312 // TODO refactor ダッサいなぁ。。313 // ホントはSearchFilterだけは保存しない方がいいので、復帰の必要もないのだが。。314 // 保存しちゃったからには復帰させなきゃ、ということで、こんな逃げコード。315 if (tabs.size() != 0 && tabs.get(0).getSearchFilter() != null) {316 txtSearch317 .setText(tabs.get(0).getSearchFilter().getPatternString());318 }319 316 txtSearch.addKeyListener(new FocusOnSpaceKeyListener(this, txtSearch)); 320 317 txtSearch.addKeyListener(new KeyAdapter() { … … 330 327 newSearchFilter.setPatternString(txtSearch.getText()); 331 328 } 332 for (SabotterTabModel tab : tabs) {333 tab. removeSearchFilter();334 tab. addSearchFilter(newSearchFilter);329 for (SabotterTabModel tab : getTabs()) { 330 tab.getFilterSet().removeSearchFilter(); 331 tab.getFilterSet().setSearchFilter(newSearchFilter); 335 332 } 336 333 } … … 367 364 (AddTabAction) actions.get(AddTabAction.ACTION_ID); 368 365 369 if ( tabs.isEmpty()) {366 if (getTabs().isEmpty()) { 370 367 SabotterTabModel tab = new SabotterTabModel(Messages.tab_timeline); 371 368 action.registerTab(tab); 372 369 getTabs().add(tab); 373 370 } else { 374 for (SabotterTabModel tab : tabs) {371 for (SabotterTabModel tab : getTabs()) { 375 372 action.registerTab(tab); 376 373 } … … 465 462 new ReloadTimeLineAction(new SabotterListener()); 466 463 reloadTimeLineAction.setText(Messages.action_reload_time_line); 467 reloadTimeLineAction 468 .setToolTipText(Messages.tooltip_reload_time_line); 464 reloadTimeLineAction.setToolTipText(Messages.tooltip_reload_time_line); 469 465 reloadTimeLineAction.setImageDescriptor(imageRegistry 470 466 .getDescriptor(Images.BUTTON_REFRESH)); … … 607 603 int index = tabFolder.getSelectionIndex(); 608 604 if (index >= 0) { 609 tabs.get(index).getViewer().getControl().setFocus();605 getTabs().get(index).getViewer().getControl().setFocus(); 610 606 } 611 607 } … … 617 613 */ 618 614 public SabotterTabModel getCurrentTab() { 619 return tabs.get(getCurrentTabIndex());615 return getTabs().get(getCurrentTabIndex()); 620 616 } 621 617 … … 644 640 */ 645 641 public List<SabotterTabModel> getTabs() { 646 return tabs;642 return state.getTabs(); 647 643 } 648 644
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)