gview.java
来自「SANCHO」· Java 代码 · 共 613 行 · 第 1/2 页
JAVA
613 行
/* * Copyright (C) 2004-2005 Rutger M. Ovidius for use with the sancho project. * See LICENSE.txt for license information. */package sancho.view.viewer;import java.util.StringTokenizer;import org.eclipse.jface.action.MenuManager;import org.eclipse.jface.preference.PreferenceStore;import org.eclipse.jface.viewers.StructuredViewer;import org.eclipse.jface.viewers.ViewerFilter;import org.eclipse.swt.SWT;import org.eclipse.swt.events.ControlAdapter;import org.eclipse.swt.events.ControlEvent;import org.eclipse.swt.events.DisposeEvent;import org.eclipse.swt.events.DisposeListener;import org.eclipse.swt.events.MenuAdapter;import org.eclipse.swt.events.MenuEvent;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.widgets.Event;import org.eclipse.swt.widgets.Listener;import org.eclipse.swt.widgets.Menu;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;import sancho.core.ICore;import sancho.core.Sancho;import sancho.model.mldonkey.enums.AbstractEnum;import sancho.view.preferences.PreferenceLoader;import sancho.view.utility.IDSelector;import sancho.view.utility.SResources;import sancho.view.viewFrame.ViewFrame;import sancho.view.viewer.filters.AbstractViewerFilter;import sancho.view.viewer.filters.ExclusionStateViewerFilter;import sancho.view.viewer.filters.FileExtensionViewerFilter;import sancho.view.viewer.filters.NetworkViewerFilter;import sancho.view.viewer.filters.RefineFilter;import sancho.view.viewer.filters.StateViewerFilter;import sancho.view.viewer.table.GTableContentProvider;import sancho.view.viewer.table.GTableLabelProvider;import sancho.view.viewer.table.GTableMenuListener;public abstract class GView implements DisposeListener { public static final String S_GVIEW = "gView"; public static final int STATE_FILTER = 1; public static final int EXCLUSION_STATE_FILTER = 2; public static final int NETWORK_FILTER = 3; public static final int FILE_EXTENSION_FILTER = 4; public static final int REFINE_FILTER = 5; protected boolean active; protected String allColumns; protected int[] columnAlignment; protected int[] columnDefaultWidths; protected String columnIDs; protected String[] columnLabels; protected ControlAdapter controlAdapter; protected String dynamicColumn = SResources.S_ES; protected boolean forceRedraw = SWT.getPlatform().equals("win32") || SWT.getPlatform().equals("gtk"); protected GSorter gSorter; protected int minDynamicColumnWidth = 100; protected boolean oldTableScrollBar; protected int oldTableWidth; protected String preferenceString; protected RefineFilter refineFilter; protected String refineString = SResources.S_ES; protected boolean saveExclusionStateFilters; protected boolean saveNetworkFilters; protected boolean saveStateFilters; protected StructuredViewer sViewer; protected GTableLabelProvider tableLabelProvider; protected AbstractEnum[] validExtensions; protected AbstractEnum[] validStates; protected ViewFrame viewFrame; protected boolean visible; public void addFilter(ViewerFilter viewerFilter) { redrawTable(false); sViewer.addFilter(viewerFilter); redrawTable(true); } protected void addMenuListener() { Menu menu = getTable().getMenu(); menu.addMenuListener(new MenuAdapter() { public void menuShown(MenuEvent e) { Menu aMenu = getTable().getMenu(); if (!((StructuredViewer) getViewer()).getSelection().isEmpty()) if (aMenu.getItemCount() > 0) aMenu.setDefaultItem(aMenu.getItem(0)); } }); } protected void createColumns() { columnIDs = IDSelector.loadIDs(preferenceString + "TableColumns", allColumns); ((ICustomViewer) getViewer()).setColumnIDs(columnIDs); final PreferenceStore p = PreferenceLoader.getPreferenceStore(); Table table = getTable(); table.setHeaderVisible(true); TableColumn[] tableColumns = table.getColumns(); for (int i = tableColumns.length - 1; i > -1; i--) tableColumns[i].dispose(); for (int i = 0; i < columnIDs.length(); i++) { final int columnIndex = i; final int arrayItem = columnIDs.charAt(i) - IDSelector.MAGIC_NUMBER; TableColumn tableColumn = new TableColumn(table, columnAlignment[arrayItem]); p.setDefault(columnLabels[arrayItem], columnDefaultWidths[arrayItem]); tableColumn.setText(SResources.getString(columnLabels[arrayItem])); int oldWidth = p.getInt(columnLabels[arrayItem]); tableColumn.setWidth((oldWidth > 0) ? oldWidth : columnDefaultWidths[arrayItem]); tableColumn.addDisposeListener(new DisposeListener() { public synchronized void widgetDisposed(DisposeEvent e) { TableColumn thisColumn = (TableColumn) e.widget; if (thisColumn.getWidth() > 0) p.setValue(columnLabels[arrayItem], thisColumn.getWidth()); } }); if (preferenceString.equals("result")) tableColumn.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { TableColumn tableColumn = (TableColumn) e.widget; if (tableColumn.getWidth() > 0) p.setValue(columnLabels[arrayItem], tableColumn.getWidth()); } }); tableColumn.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { sortByColumn(columnIndex); } }); } } protected void createContents() { sViewer.setUseHashlookup(true); allColumns = IDSelector.createIDString(columnLabels); Table table = getTable(); table.setRedraw(false); table.setLayoutData(new GridData(GridData.FILL_BOTH)); createColumns(); getTableContentProvider().initialize(); getTableLabelProvider().initialize(); gSorter.initialize(); getTableMenuListener().initialize(); sViewer.setContentProvider(getTableContentProvider()); sViewer.setLabelProvider(getTableLabelProvider()); updateDisplay(); MenuManager popupMenu = new MenuManager(SResources.S_ES); popupMenu.setRemoveAllWhenShown(true); popupMenu.addMenuListener(getTableMenuListener()); table.setMenu(popupMenu.createContextMenu(getTable())); sViewer.setSorter(gSorter); loadDynamicColumn(); getTable().addDisposeListener(this); loadFilters(); setInput(); table.setRedraw(true); } public String getAllColumnIDs() { return allColumns; } public String getColumnIDs() { return columnIDs; } public String[] getColumnLabels() { return columnLabels; } public ICore getCore() { return Sancho.getCoreFactory().getCore(); } public int getDynamicColumn() { if (dynamicColumn.equals(SResources.S_ES)) return -1; else return columnIDs.indexOf(dynamicColumn); // dynamicCOlumn.charAt(0) - IDSelector.MAGIC_NUMBER; } public AbstractViewerFilter getFilter(Class aClass) { for (int i = 0; i < getFilters().length; i++) { if (aClass.isInstance(getFilters()[i])) return (AbstractViewerFilter) getFilters()[i]; } return null; } public ViewerFilter[] getFilters() { return sViewer.getFilters(); } public int getMinDynamicColumnWidth() { return minDynamicColumnWidth; } public String getPreferenceString() { return preferenceString; } public String getRefineString() { return refineString; } public Shell getShell() { return getTable().getShell(); } public int getSortColumn() { return gSorter.getLastColumnIndex(); } public abstract Table getTable(); public abstract GTableContentProvider getTableContentProvider(); public GTableLabelProvider getTableLabelProvider() { return tableLabelProvider; } public abstract GTableMenuListener getTableMenuListener(); public AbstractEnum[] getValidExtensions() { return validExtensions; } public AbstractEnum[] getValidStates() { return validStates; } public StructuredViewer getViewer() { return this.sViewer; } public ViewFrame getViewFrame() { return viewFrame; } public boolean isActive() { return active; } public boolean isDisposed() { return ((getViewer() == null) || (getTable() == null) || getTable().isDisposed()); } public boolean isVisible() { return visible; } public void loadDynamicColumn() { String tmp = PreferenceLoader.loadString(preferenceString + "DynamicColumn"); if (!tmp.equals(SResources.S_ES)) setDynamicColumn(tmp); int minWidth = PreferenceLoader.loadInt(preferenceString + "MinDynamicColumnWidth"); if (minWidth > 0) setMinDynamicColumnWidth(minWidth); } public void loadExclusionStateFilters() { int tmp = PreferenceLoader.loadInt(preferenceString + "ExclusionStateFilters"); if (tmp > 0) { ExclusionStateViewerFilter s = new ExclusionStateViewerFilter(this); s.setFiltered(tmp); addFilter(s); } } public void swapFilters(String string) { redrawTable(false); resetFilters(); if (string != null) addFilters(string); redrawTable(true); } public String filtersToString() { String result = SResources.S_ES; ViewerFilter[] filters = getFilters(); for (int i = 0; i < filters.length; i++) result += filters[i].toString(); return result; } public void addFilters(String string) { StringTokenizer st = new StringTokenizer(string, ","); String s1, s2; int filterType; while (st.hasMoreTokens()) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?