// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.designer.core.ui.editor; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.ArrayUtils; import org.eclipse.gef.palette.CombinedTemplateCreationEntry; import org.eclipse.gef.palette.CreationToolEntry; import org.eclipse.gef.palette.PaletteContainer; import org.eclipse.gef.palette.PaletteDrawer; import org.eclipse.gef.palette.PaletteGroup; import org.eclipse.gef.palette.PaletteRoot; import org.eclipse.gef.palette.PaletteSeparator; import org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences; import org.eclipse.gef.ui.palette.PaletteViewer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.talend.commons.ui.runtime.image.ECoreImage; import org.talend.commons.ui.runtime.image.ImageProvider; import org.talend.core.model.components.IComponent; import org.talend.core.model.components.IComponentsFactory; import org.talend.core.model.components.TalendPaletteGroup; import org.talend.core.model.process.IProcess; import org.talend.core.model.process.IProcess2; import org.talend.core.model.repository.ERepositoryObjectType; import org.talend.designer.core.DesignerPlugin; import org.talend.designer.core.IPaletteFilter; import org.talend.designer.core.i18n.Messages; import org.talend.designer.core.model.process.AbstractProcessProvider; import org.talend.designer.core.ui.ActiveProcessTracker; import org.talend.designer.core.ui.editor.nodes.Node; import org.talend.designer.core.ui.editor.notes.NoteCreationFactory; import org.talend.designer.core.ui.editor.palette.TalendPaletteDrawer; import org.talend.designer.core.ui.preferences.TalendDesignerPrefConstants; import org.talend.repository.model.ComponentsFactoryProvider; /** * This class creates the palette in the Gef Editor. <br/> * * $Id: TalendEditorPaletteFactory.java 83089 2012-05-09 02:19:40Z plv $ * */ public final class TalendEditorPaletteFactory { private static final String FAMILY_HIER_SEPARATOR = "/"; //$NON-NLS-1$ /** Preference ID used to persist the palette location. */ public static final String PALETTE_DOCK_LOCATION = "TalendEditorPaletteFactory.Location"; //$NON-NLS-1$ /** Preference ID used to persist the palette size. */ public static final String PALETTE_SIZE = "TalendEditorPaletteFactory.Size"; //$NON-NLS-1$ /** Preference ID used to persist the flyout palette's state. */ public static final String PALETTE_STATE = "TalendEditorPaletteFactory.State"; //$NON-NLS-1$ private static PaletteRoot palette; private static String filter; private static boolean paletteState = true; private static PaletteGroup paGroup = new PaletteGroup(""); //$NON-NLS-1$ /** Create the "Shapes" drawer. */ private static void createComponentsDrawer(final IComponentsFactory compFac, boolean needHiddenComponent, int a) { // clearGroup(); PaletteDrawer componentsDrawer; String name, longName; String family; String oraFamily; LinkedList<CreationToolEntry> nodeList = new LinkedList<CreationToolEntry>(); List<String> families = new ArrayList<String>(); HashMap<String, String> familyMap = new HashMap<String, String>(); CombinedTemplateCreationEntry component; Hashtable<String, PaletteDrawer> ht = new Hashtable<String, PaletteDrawer>(); if (a == 0) { componentsDrawer = new PaletteDrawer(Messages.getString("TalendEditorPaletteFactory.Default")); //$NON-NLS-1$ } List<IComponent> componentList = new ArrayList<IComponent>(compFac.getComponents()); IProcess process = ActiveProcessTracker.getCurrentProcess(); ERepositoryObjectType type = null; if (process != null && process instanceof IProcess2 && ((IProcess2) process).getProperty() != null) { type = ERepositoryObjectType.getItemType(((IProcess2) process).getProperty().getItem()); } if (type == null) { return; } Iterator<IComponent> iterator = componentList.iterator(); while (iterator.hasNext()) { IComponent comp = iterator.next(); if (!ArrayUtils.contains(type.getProducts(), comp.getPaletteType())) { iterator.remove(); } } Collections.sort(componentList, new Comparator<IComponent>() { public int compare(IComponent component1, IComponent component2) { return component1.getName().compareTo(component2.getName()); } }); for (int i = 0; i < componentList.size(); i++) { IComponent xmlComponent = componentList.get(i); if (xmlComponent.isTechnical()) { continue; } // if (xmlComponent.isTechnical() || !xmlComponent.isVisible()) { // continue; // } if (xmlComponent.isLoaded()) { family = xmlComponent.getTranslatedFamilyName(); oraFamily = xmlComponent.getOriginalFamilyName(); String[] strings = family.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); String[] oraStrings = oraFamily.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); for (int j = 0; j < strings.length; j++) { if (!needHiddenComponent && !xmlComponent.isVisible(oraStrings[j])) { continue; } families.add(strings[j]); familyMap.put(strings[j], oraStrings[j]); } } } Collections.sort(families); if (a == 0) { for (Iterator iter = families.iterator(); iter.hasNext();) { family = (String) iter.next(); String oraFam = familyMap.get(family); componentsDrawer = ht.get(family); if (componentsDrawer == null) { componentsDrawer = createComponentDrawer(ht, family); if (componentsDrawer instanceof IPaletteFilter) { ((IPaletteFilter) componentsDrawer).setOriginalName(oraFam); } } } } boolean noteAeeded = false; boolean needAddNote = true; boolean needToAdd = false; for (int i = 0; i < componentList.size(); i++) { IComponent xmlComponent = componentList.get(i); if (xmlComponent.isTechnical()) { continue; } family = xmlComponent.getTranslatedFamilyName(); oraFamily = xmlComponent.getOriginalFamilyName(); if (filter != null) { String regex = getFilterRegex(); needAddNote = "Note".toLowerCase().matches(regex); //$NON-NLS-1$ } if ((oraFamily.equals("Misc") || oraFamily.equals("Miscellaneous")) && !noteAeeded && needAddNote) { //$NON-NLS-1$ CreationToolEntry noteCreationToolEntry = new CreationToolEntry( Messages.getString("TalendEditorPaletteFactory.Note"), //$NON-NLS-1$ Messages.getString("TalendEditorPaletteFactory.CreateNote"), //$NON-NLS-1$ new NoteCreationFactory(), ImageProvider.getImageDesc(ECoreImage.CODE_ICON), ImageProvider.getImageDesc(ECoreImage.CODE_ICON)); if (a == 0) { PaletteDrawer drawer = ht.get(family); //$NON-NLS-1$ if (drawer != null) { noteCreationToolEntry.setParent(drawer); drawer.add(noteCreationToolEntry); } } else if (a == 1) { for (String s : families) { if (s.equals(family)) {//$NON-NLS-1$ needToAdd = true; } } if (needToAdd == true) nodeList.add(0, noteCreationToolEntry); // noteCreationToolEntry.setParent(paGroup); // paGroup.add(noteCreationToolEntry); } noteAeeded = true; } if (filter != null) { String regex = getFilterRegex(); if (!xmlComponent.getName().toLowerCase().matches(regex) && !xmlComponent.getLongName().toLowerCase().matches(regex)) { continue; } } if (!needHiddenComponent && !xmlComponent.isVisible()) { continue; } if (xmlComponent.isLoaded()) { name = xmlComponent.getName(); longName = xmlComponent.getLongName(); ImageDescriptor imageSmall = xmlComponent.getIcon16(); IPreferenceStore store = DesignerPlugin.getDefault().getPreferenceStore(); ImageDescriptor imageLarge; final String string = store.getString(TalendDesignerPrefConstants.LARGE_ICONS_SIZE); if (string.equals("24")) { //$NON-NLS-1$ imageLarge = xmlComponent.getIcon24(); } else { imageLarge = xmlComponent.getIcon32(); } String[] strings = family.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); String[] oraStrings = oraFamily.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); for (int j = 0; j < strings.length; j++) { if (!needHiddenComponent && !xmlComponent.isVisible(oraStrings[j])) { continue; } component = new CombinedTemplateCreationEntry(name, name, Node.class, new PaletteComponentFactory( xmlComponent), imageSmall, imageLarge); component.setDescription(longName); if (a == 0) { componentsDrawer = ht.get(strings[j]); component.setParent(componentsDrawer); componentsDrawer.add(component); } else if (a == 1) { boolean canAdd = true; // listName = paGroup.getChildren(); // for (int z = 0; z < listName.size(); z++) { // if ((((PaletteEntry) listName.get(z)).getLabel()).equals(component.getLabel())) { // canAdd = false; // } // } for (int z = 0; z < nodeList.size(); z++) { if ((nodeList.get(z).getLabel()).equals(component.getLabel())) { canAdd = false; } } if (canAdd == true) { nodeList.add(component); // component.setParent(paGroup); // paGroup.add(component); } } } } } if (a == 1) { for (CreationToolEntry entryCom : nodeList) { entryCom.setParent(paGroup); paGroup.add(entryCom); } palette.add(paGroup); } } /** Create the "Shapes" drawer. */ private static void createComponentsDrawer(final IComponentsFactory compFac, boolean needHiddenComponent, boolean isFavorite, int a) { clearGroup(); LinkedList<CreationToolEntry> nodeList = new LinkedList<CreationToolEntry>(); // } else if (a == 0) { PaletteDrawer componentsDrawer; String name, longName; String family; String oraFamily; List<String> families = new ArrayList<String>(); HashMap<String, String> familyMap = new HashMap<String, String>(); boolean favoriteFlag; List listName = new ArrayList(); CombinedTemplateCreationEntry component; Hashtable<String, PaletteDrawer> ht = new Hashtable<String, PaletteDrawer>(); paletteState = isFavorite; if (a == 0) { componentsDrawer = new PaletteDrawer(Messages.getString("TalendEditorPaletteFactory.Default")); //$NON-NLS-1$ } List<IComponent> componentList = new ArrayList<IComponent>(compFac.getComponents()); IProcess process = ActiveProcessTracker.getCurrentProcess(); ERepositoryObjectType type = null; if (process != null && process instanceof IProcess2 && ((IProcess2) process).getProperty() != null) { type = ERepositoryObjectType.getItemType(((IProcess2) process).getProperty().getItem()); } if (type == null) { return; } Iterator<IComponent> iterator = componentList.iterator(); while (iterator.hasNext()) { IComponent comp = iterator.next(); if (!ArrayUtils.contains(type.getProducts(), comp.getPaletteType())) { iterator.remove(); } } Collections.sort(componentList, new Comparator<IComponent>() { public int compare(IComponent component1, IComponent component2) { return component1.getName().compareTo(component2.getName()); } }); for (int i = 0; i < componentList.size(); i++) { IComponent xmlComponent = componentList.get(i); if (xmlComponent.isTechnical()) { continue; } // if (xmlComponent.isTechnical() || !xmlComponent.isVisible()) { // continue; // } if (xmlComponent.isLoaded()) { family = xmlComponent.getTranslatedFamilyName(); oraFamily = xmlComponent.getOriginalFamilyName(); String[] strings = family.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); String[] oraStrings = oraFamily.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); for (int j = 0; j < strings.length; j++) { if (!needHiddenComponent && !xmlComponent.isVisible(oraStrings[j])) { continue; } String key = null; key = xmlComponent.getName() + "#" + oraStrings[j];//$NON-NLS-1$ if (a == 0) { if (!oraStrings[j].equals("Misc")) {//$NON-NLS-1$ if (isFavorite && !DesignerPlugin.getDefault().getPreferenceStore().getBoolean(key)) { continue; } } } families.add(strings[j]); familyMap.put(strings[j], oraStrings[j]); } } } Collections.sort(families); if (a == 0) { for (Iterator iter = families.iterator(); iter.hasNext();) { family = (String) iter.next(); String oraFam = familyMap.get(family); componentsDrawer = ht.get(family); if (componentsDrawer == null) { componentsDrawer = createComponentDrawer(ht, family); if (componentsDrawer instanceof IPaletteFilter) { ((IPaletteFilter) componentsDrawer).setOriginalName(oraFam); } } } } boolean noteAeeded = false; boolean needAddNote = true; boolean needToAdd = false; for (int i = 0; i < componentList.size(); i++) { IComponent xmlComponent = componentList.get(i); if (xmlComponent.isTechnical()) { continue; } family = xmlComponent.getTranslatedFamilyName(); oraFamily = xmlComponent.getOriginalFamilyName(); if (filter != null) { Pattern pattern = Pattern.compile("^[A-Za-z0-9]+$");//$NON-NLS-1$ Matcher matcher = pattern.matcher(filter); if (!matcher.matches() && filter.length() != 0) { filter = "None"; } String regex = getFilterRegex(); needAddNote = "Note".toLowerCase().matches(regex); //$NON-NLS-1$ } // if (isFavorite == false) { if ((oraFamily.equals("Misc") || oraFamily.equals("Miscellaneous")) && !noteAeeded && needAddNote) { //$NON-NLS-1$ CreationToolEntry noteCreationToolEntry = new CreationToolEntry( Messages.getString("TalendEditorPaletteFactory.Note"), //$NON-NLS-1$ Messages.getString("TalendEditorPaletteFactory.CreateNote"), //$NON-NLS-1$ new NoteCreationFactory(), ImageProvider.getImageDesc(ECoreImage.CODE_ICON), ImageProvider.getImageDesc(ECoreImage.CODE_ICON)); if (a == 0) { PaletteDrawer drawer = ht.get(family);//$NON-NLS-1$ if (drawer != null) { noteCreationToolEntry.setParent(drawer); drawer.add(noteCreationToolEntry); } } else if ((a == 1)) { for (String s : families) { if (s.equals(family)) {//$NON-NLS-1$ needToAdd = true; } } if (needToAdd == true) nodeList.add(0, noteCreationToolEntry); } noteAeeded = true; } // } if (filter != null) { Pattern pattern = Pattern.compile("^[A-Za-z0-9]+$");//$NON-NLS-1$ Matcher matcher = pattern.matcher(filter); if (matcher.matches()) { String regex = getFilterRegex(); if (!xmlComponent.getName().toLowerCase().matches(regex) && !xmlComponent.getLongName().toLowerCase().matches(regex)) { continue; } } } if (!needHiddenComponent && !xmlComponent.isVisible()) { continue; } family = xmlComponent.getTranslatedFamilyName(); oraFamily = xmlComponent.getOriginalFamilyName(); String[] keys = family.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); String[] oraKeys = oraFamily.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); for (int j = 0; j < keys.length; j++) { String key = null; key = xmlComponent.getName() + "#" + oraKeys[j];//$NON-NLS-1$ if (isFavorite && !DesignerPlugin.getDefault().getPreferenceStore().getBoolean(key)) { continue; } } if (xmlComponent.isLoaded()) { name = xmlComponent.getName(); longName = xmlComponent.getLongName(); ImageDescriptor imageSmall = xmlComponent.getIcon16(); IPreferenceStore store = DesignerPlugin.getDefault().getPreferenceStore(); ImageDescriptor imageLarge; final String string = store.getString(TalendDesignerPrefConstants.LARGE_ICONS_SIZE); if (string.equals("24")) { //$NON-NLS-1$ imageLarge = xmlComponent.getIcon24(); } else { imageLarge = xmlComponent.getIcon32(); } String[] strings = family.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); String[] oraStrings = oraFamily.split(ComponentsFactoryProvider.FAMILY_SEPARATOR_REGEX); for (int j = 0; j < strings.length; j++) { if (!needHiddenComponent && !xmlComponent.isVisible(oraStrings[j])) { continue; } String key = null; key = xmlComponent.getName() + "#" + oraStrings[j];//$NON-NLS-1$ if (isFavorite && !DesignerPlugin.getDefault().getPreferenceStore().getBoolean(key)) { continue; } component = new CombinedTemplateCreationEntry(name, name, Node.class, new PaletteComponentFactory( xmlComponent), imageSmall, imageLarge); component.setDescription(longName); if (a == 0) { componentsDrawer = ht.get(strings[j]); component.setParent(componentsDrawer); componentsDrawer.add(component); } else if (a == 1) { boolean canAdd = true; // listName = paGroup.getChildren(); // for (int z = 0; z < listName.size(); z++) { // if ((((PaletteEntry) listName.get(z)).getLabel()).equals(component.getLabel())) { // canAdd = false; // } // } for (int z = 0; z < nodeList.size(); z++) { if ((nodeList.get(z).getLabel()).equals(component.getLabel())) { canAdd = false; } } if (canAdd == true) { nodeList.add(component); // component.setParent(paGroup); // paGroup.add(component); } } } } } if (a == 1) { for (CreationToolEntry entryComponent : nodeList) { entryComponent.setParent(paGroup); paGroup.add(entryComponent); } palette.add(paGroup); } setFilter(""); //$NON-NLS-1$ } /** * yzhang Comment method "getFilterRegex". * * @return */ private static String getFilterRegex() { String regex = "\\b.*" + filter.replaceAll("\\*", ".*") + ".*\\b"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ regex = regex.replaceAll("\\?", ".?"); //$NON-NLS-1$ //$NON-NLS-2$ return regex; } private static PaletteDrawer createComponentDrawer(Hashtable<String, PaletteDrawer> ht, String familyToCreate) { int index = familyToCreate.lastIndexOf(FAMILY_HIER_SEPARATOR); String family; PaletteDrawer parentPaletteDrawer = null; if (index > -1) { family = familyToCreate.substring(index + 1); String parentFamily = familyToCreate.substring(0, index); parentPaletteDrawer = ht.get(parentFamily); if (parentPaletteDrawer == null) { parentPaletteDrawer = createComponentDrawer(ht, parentFamily); } } else { family = familyToCreate; } PaletteDrawer paletteDrawer = new TalendPaletteDrawer(family); paletteDrawer.setInitialState(loadFamilyState(familyToCreate)); if (parentPaletteDrawer == null) { palette.add(paletteDrawer); } else { parentPaletteDrawer.add(paletteDrawer); } ht.put(familyToCreate, paletteDrawer); return paletteDrawer; } /** * DOC nrousseau Comment method "loadFamilyState". * * @param family * @return */ private static int loadFamilyState(String family) { IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore(); preferenceStore.setDefault(PALETTE_STATE + family, PaletteDrawer.INITIAL_STATE_CLOSED); return preferenceStore.getInt(PALETTE_STATE + family); } public static void saveFamilyState(PaletteViewer viewer) { IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore(); for (Object o : palette.getChildren()) { if (o instanceof PaletteDrawer) { PaletteDrawer paletteItem = (PaletteDrawer) o; saveFamilyState(viewer, preferenceStore, paletteItem); } } } private static void saveFamilyState(PaletteViewer viewer, IPreferenceStore preferenceStore, PaletteDrawer paletteItem) { String family = paletteItem.getLabel(); int value; if (viewer.isExpanded(paletteItem)) { value = PaletteDrawer.INITIAL_STATE_OPEN; } else { value = PaletteDrawer.INITIAL_STATE_CLOSED; } paletteItem.setInitialState(value); preferenceStore.setValue(PALETTE_STATE + family, value); for (Iterator iter = paletteItem.getChildren().iterator(); iter.hasNext();) { Object object = iter.next(); if (object instanceof PaletteDrawer) { PaletteDrawer paletteDrawer = (PaletteDrawer) object; saveFamilyState(viewer, preferenceStore, paletteDrawer); } } } /** * Creates the PaletteRoot and adds all palette elements. Use this factory method to create a new palette for your * graphical editor. * * @return a new PaletteRoot */ public static PaletteRoot createPalette(final IComponentsFactory compFac) { int histate = DesignerPlugin.getDefault().getPreferenceStore().getInt("HiddenState"); //$NON-NLS-1$ palette = new PaletteRoot(); AbstractProcessProvider.loadComponentsFromProviders(); palette.add(createToolsGroup()); createComponentsDrawer(compFac, false, histate); return palette; } public static PaletteRoot createPalette(final IComponentsFactory compFac, boolean isFavorite) { int histate = DesignerPlugin.getDefault().getPreferenceStore().getInt("HiddenState"); //$NON-NLS-1$ palette = new PaletteRoot(); AbstractProcessProvider.loadComponentsFromProviders(); palette.add(createToolsGroup()); createComponentsDrawer(compFac, false, isFavorite, histate); return palette; } public static PaletteRoot getAllNodeStructure(final IComponentsFactory compFac) { palette = new PaletteRoot(); AbstractProcessProvider.loadComponentsFromProviders(); createComponentsDrawer(compFac, true, 0); return palette; } /** * Reload the palette components. * * yzhang Comment method "createPalette". * * @param compFac * @param root * @return */ public static PaletteRoot createPalette(final IComponentsFactory compFac, PaletteRoot root) {// ing int histate = DesignerPlugin.getDefault().getPreferenceStore().getInt("HiddenState"); //$NON-NLS-1$ palette = root; AbstractProcessProvider.loadComponentsFromProviders(); createComponentsDrawer(compFac, false, histate); return palette; } public static PaletteRoot createPalette(final IComponentsFactory compFac, PaletteRoot root, boolean isFavorite) {// after int histate = DesignerPlugin.getDefault().getPreferenceStore().getInt("HiddenState"); //$NON-NLS-1$ palette = root; AbstractProcessProvider.loadComponentsFromProviders(); createComponentsDrawer(compFac, false, isFavorite, histate); return palette; } /** * Return a FlyoutPreferences instance used to save/load the preferences of a flyout palette. */ public static FlyoutPreferences createPalettePreferences() { return new FlyoutPreferences() { private IPreferenceStore getPreferenceStore() { return DesignerPlugin.getDefault().getPreferenceStore(); } public int getDockLocation() { return getPreferenceStore().getInt(PALETTE_DOCK_LOCATION); } public int getPaletteState() { return getPreferenceStore().getInt(PALETTE_STATE); } public int getPaletteWidth() { return getPreferenceStore().getInt(PALETTE_SIZE); } public void setDockLocation(final int location) { getPreferenceStore().setValue(PALETTE_DOCK_LOCATION, location); } public void setPaletteState(final int state) { getPreferenceStore().setValue(PALETTE_STATE, state); } public void setPaletteWidth(final int width) { getPreferenceStore().setValue(PALETTE_SIZE, width); } }; } /** Create the "Tools" group. */ private static PaletteContainer createToolsGroup() { TalendPaletteGroup toolGroup = new TalendPaletteGroup(Messages.getString("TalendEditorPaletteFactory.Tools")); //$NON-NLS-1$ // Add a selection tool to the group // ToolEntry tool = new PanningSelectionToolEntry(); // toolGroup.add(tool); // palette.setDefaultEntry(tool); // Add a marquee tool to the group // toolGroup.add(new MarqueeToolEntry()); // CreationToolEntry noteCreationToolEntry = new CreationToolEntry(Messages.getString("TalendEditorPaletteFactory.Note"), //$NON-NLS-1$ // Messages.getString("TalendEditorPaletteFactory.CreateNote"), //$NON-NLS-1$ // new NoteCreationFactory(), ImageProvider.getImageDesc(ECoreImage.CODE_ICON), ImageProvider // .getImageDesc(ECoreImage.CODE_ICON)); // toolGroup.add(noteCreationToolEntry); // Add a (unnamed) separator to the group toolGroup.add(new PaletteSeparator()); return toolGroup; } /** Utility class. */ private TalendEditorPaletteFactory() { // Utility class } /** * yzhang Comment method "setFilter". * * @param filter */ public static void setFilter(String filter) { TalendEditorPaletteFactory.filter = filter.toLowerCase(); } public static void clearGroup() { paGroup.getChildren().clear(); List list = palette.getChildren(); if (list.size() > 0) { for (int i = 0; i < list.size(); i++) { if (list.get(i) instanceof PaletteGroup) { PaletteGroup entry = (PaletteGroup) list.get(i); if (entry instanceof TalendPaletteGroup) { continue; } palette.remove(entry); } } } } /** * DOC guanglong.du Comment method "createEmptyPalette". * * @return */ public static PaletteRoot createEmptyPalette() { palette = new PaletteRoot(); palette.add(createToolsGroup()); return palette; } }