Fix filter
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/FilterMenuContributor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/FilterMenuContributor.java deleted file mode 100644 index 3047bbb..0000000 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/FilterMenuContributor.java +++ /dev/null
@@ -1,262 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.xsd.editor.internal.search; - -import java.util.ArrayList; -import java.util.List; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; -import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialog; -import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification; -import org.eclipse.wst.xsd.editor.XSDEditorPlugin; -import org.eclipse.wst.xsd.editor.internal.dialogs.BuiltInTypesTreeViewerProvider; -import org.eclipse.wst.xsd.editor.internal.dialogs.SelectBuiltInTypesForFilteringDialog; -import org.eclipse.xsd.XSDTypeDefinition; - -public class FilterMenuContributor { - private static final String CONST_PREFERED_BUILT_IN_TYPES = XSDEditorPlugin.CONST_PREFERED_BUILT_IN_TYPES; - - private XSDTypesSearchListProvider searchListProvider; - private ComponentSearchListDialog parentDialog; - - private MenuManager fMenuManager; - private ToolItem toolItem; - private ToolBar filterToolBar; - private IXSDTypesFilter filter; - - private String toolItemIconFile = "icons/filter.gif"; - private String on_off_filter_actionText = "Uncommon built-in types"; - private String configureFilterDialogText = "Filter..."; - private String filterIconFile = "filter.gif"; - - /** - * I need to know which dialog i will contribute to and which provider that - * dialog use,provide it for me here - * @param searchListProvider - * @param parentDialog - */ - public FilterMenuContributor(XSDTypesSearchListProvider searchListProvider, - ComponentSearchListDialog parentDialog) { - this.searchListProvider = searchListProvider; - this.parentDialog = parentDialog; - } - - - - /** - * Give me the toolbar where I will contribute the items to - * @param toolBar - * @return - */ - public ToolItem createToolItem(ToolBar toolBar) { - this.filterToolBar = toolBar; - toolItem = new ToolItem(filterToolBar, SWT.PUSH, 0); - - GridData data= new GridData(); - data.horizontalAlignment= GridData.END; - filterToolBar.setLayoutData(data); - - fMenuManager = new MenuManager(); - fMenuManager.add(new FilterUncommonBuiltInTypesAction()); - fMenuManager.add(new LaunchConfigFilterDialogAction()); - - toolItem.setImage(XSDEditorPlugin.getXSDImage(toolItemIconFile)); - toolItem.setToolTipText("Filter uncommon built-in types"); - toolItem.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - Menu menu = fMenuManager.createContextMenu(parentDialog.getShell()); - Rectangle bounds = toolItem.getBounds(); - Point topLeft = new Point(bounds.x, bounds.y + bounds.height); - topLeft = filterToolBar.toDisplay(topLeft); - menu.setLocation(topLeft.x, topLeft.y); - menu.setVisible(true); - } - }); /// - - // register the filter with the Provider object - filter = new BuiltInTypesFilter(); - filter.turnOn(); - searchListProvider.setBuiltInFilter(filter); - - return toolItem; - } - - - /** - * Action for the button to turn on and off Built-In types filter - */ - private class FilterUncommonBuiltInTypesAction extends Action { - public FilterUncommonBuiltInTypesAction() { - super(on_off_filter_actionText, Action.AS_CHECK_BOX); - } - - public void run() { - // flip states of the filter - if( filter.isOn() ) - filter.turnOff(); - else - filter.turnOn(); - - parentDialog.updateForFilterChange(); - } - } - - private class LaunchConfigFilterDialogAction extends Action { - public LaunchConfigFilterDialogAction(){ - super(configureFilterDialogText, - XSDEditorPlugin.getImageDescriptor(filterIconFile, true) ); - } - public void run(){ - Shell shell = Display.getCurrent().getActiveShell(); - - BuiltInTypesTreeViewerProvider provider = - new BuiltInTypesTreeViewerProvider(); - - SelectBuiltInTypesForFilteringDialog typeFilterDialog = - new SelectBuiltInTypesForFilteringDialog(shell, - provider.getLabelProvider(), provider.getContentProvider()); - - List allBuiltInTypes = BuiltInTypesTreeViewerProvider.getAllBuiltInTypes(); - typeFilterDialog.setInput(allBuiltInTypes); - - IPreferenceStore store = XSDEditorPlugin.getPlugin().getPreferenceStore(); - String listString = store.getString(CONST_PREFERED_BUILT_IN_TYPES); - - Object[] selectedBuiltInTypes = - SelectBuiltInTypesForFilteringDialog.getSelectedBuiltInTypesFromString(listString, - allBuiltInTypes).toArray(); - - typeFilterDialog.setInitialSelections(selectedBuiltInTypes); - - typeFilterDialog.create(); - //typeFilter.getTreeViewer().setSorter(new ViewerSorter()); - - if (typeFilterDialog.open() == Window.OK){ - /* we don't use getResult() because it also returns grayed - * elements */ - selectedBuiltInTypes = typeFilterDialog.getResult(); - - // removed grayed checked elements (parent node) - List nonGrayItems = new ArrayList(); - for(int i = 0; i < selectedBuiltInTypes.length; i++ ){ - if ( selectedBuiltInTypes[i] instanceof ComponentSpecification){ - nonGrayItems.add(selectedBuiltInTypes[i]); - } - } - selectedBuiltInTypes = nonGrayItems.toArray(); - - String newlySelectionToBeStored = - SelectBuiltInTypesForFilteringDialog.getTypesListInString(selectedBuiltInTypes); - store.setValue(CONST_PREFERED_BUILT_IN_TYPES, newlySelectionToBeStored); - - parentDialog.updateForFilterChange(); - } - } - } - - /** - * This is a concrete filter, used to filter out built-in types - * Register it with a provider to use it. - */ - private class BuiltInTypesFilter implements IXSDTypesFilter{ - - private static final String BUILT_IN_TYPES_TARGET_NAMESPACE = "http://www.w3.org/2001/XMLSchema"; - private static final String LIST_SEP = SelectBuiltInTypesForFilteringDialog.CUSTOM_LIST_SEPARATOR; - private IPreferenceStore store = XSDEditorPlugin.getPlugin().getPreferenceStore(); - - /** - * True is the Filter is currently turned on, false otherwise - */ - public boolean currentStatus = true; - - private String selectedBuiltInTypes; - - /** - * Give me the name of the built-in type, i will say whether or not - * to filter it out. - * Note: I will say no/false whenever I am not sure.. - */ - public boolean shouldFilterOut(Object o) { - // if the I am turned on - if ( currentStatus ){ - - // selectedBuiltInTypes must always contain a trail LIST_SEP - // at the end for the filter to work properly - selectedBuiltInTypes = - store.getString(CONST_PREFERED_BUILT_IN_TYPES); - - if ( o instanceof XSDTypeDefinition){ - XSDTypeDefinition td = (XSDTypeDefinition) o; - /* if the targetname space indicates this is of built-in types AND - * the name is not in the allowed list (not-filter list) then - * it should be filtered - */ - if ( td.getTargetNamespace().equals(BUILT_IN_TYPES_TARGET_NAMESPACE) && - selectedBuiltInTypes.indexOf(td.getName() + LIST_SEP) == -1 ){ - return true; - } - } - } - return false; - } - - /* (non-Javadoc) - * @see org.eclipse.wst.xsd.adt.search.IXSDTypesFilter#turnOn() - */ - public void turnOn() { - currentStatus = true; - } - - /* (non-Javadoc) - * @see org.eclipse.wst.xsd.adt.search.IXSDTypesFilter#turnOff() - */ - public void turnOff() { - currentStatus = false; - } - - /* (non-Javadoc) - * @see org.eclipse.wst.xsd.adt.search.IXSDTypesFilter#isOn() - */ - public boolean isOn() { - return currentStatus; - } - - } - - public void setConfigureFilterDialogText(String configureFilterDialogText) { - this.configureFilterDialogText = configureFilterDialogText; - } - - public void setFilterIconFile(String filterIconFile) { - this.filterIconFile = filterIconFile; - } - - public void setOn_off_filter_actionText(String on_off_action) { - this.on_off_filter_actionText = on_off_action; - } - - public void setToolItemIconFile(String toolItemIconFile) { - this.toolItemIconFile = toolItemIconFile; - } -}