// ============================================================================ // // Copyright (C) 2006-2016 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.dataprofiler.core.ui.editor; import java.util.Iterator; import java.util.LinkedList; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.CoolBarManager; import org.eclipse.jface.action.ToolBarContributionItem; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ControlListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.CoolBar; import org.eclipse.ui.forms.editor.FormEditor; import org.eclipse.ui.forms.editor.IFormPage; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.talend.dataprofiler.core.ImageLib; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; /** * * DOC mzhao class global comment. Detailled comment */ public class TdEditorToolBar { private CoolBar coolBar = null; private CoolBarManager coolBarMgr; private ToolBarManager defaultToolBarMgr; private TdEditorBarWrapper editorBarWrap; private LinkedList<Action> actions = new LinkedList<Action>(); public TdEditorToolBar(Composite parent, TdEditorBarWrapper editorBarWrap) { this.editorBarWrap = editorBarWrap; // create coolbar coolBar = new CoolBar(parent, SWT.FLAT); coolBarMgr = new CoolBarManager(coolBar); GridData gid = new GridData(); gid.horizontalAlignment = GridData.FILL; coolBar.setLayoutData(gid); // initialize default actions defaultToolBarMgr = new ToolBarManager(SWT.FLAT); actions.add(new ExpandSectionAction(editorBarWrap)); actions.add(new CollapseSectionAction(editorBarWrap)); for (Action action : actions) { defaultToolBarMgr.add(action); } // add all toolbars to parent coolbar coolBarMgr.add(new ToolBarContributionItem(defaultToolBarMgr)); coolBarMgr.update(true); } public void addResizeListener(ControlListener listener) { coolBar.addControlListener(listener); } public CoolBar getToolbarControl() { return coolBar; } public TdEditorBarWrapper getEditorBarWrap() { return editorBarWrap; } public void addActions(Action... actions) { assert actions != null; if (coolBarMgr != null) { for (Action action : actions) { defaultToolBarMgr.add(action); } // coolBarMgr.add(new ToolBarContributionItem(defaultToolBarMgr)); defaultToolBarMgr.update(true); coolBarMgr.update(true); } } /** * * DOC mzhao TdEditorToolBar class global comment. Detailled comment */ private class CollapseSectionAction extends Action { public CollapseSectionAction(TdEditorBarWrapper editorBarWrap) { super(DefaultMessagesImpl.getString("ExpandAll")); //$NON-NLS-1$ this.setImageDescriptor(ImageLib.getImageDescriptor(ImageLib.EXPAND_ALL)); } @Override public void run() { expandSwitcher(true); } } /** * * DOC mzhao TdEditorToolBar class global comment. Detailled comment */ private class ExpandSectionAction extends Action { public ExpandSectionAction(TdEditorBarWrapper editorBarWrap) { super(DefaultMessagesImpl.getString("CollapseAll")); //$NON-NLS-1$ this.setImageDescriptor(ImageLib.getImageDescriptor(ImageLib.COLLAPSE_ALL)); } @Override public void run() { expandSwitcher(false); } } /** * DOC bZhou Comment method "expandSwitcher". * * @param expanded */ private void expandSwitcher(boolean expanded) { Iterator<ExpandableComposite> it = editorBarWrap.getExpandableComposites().iterator(); while (it.hasNext()) { ExpandableComposite composite = it.next(); if (composite == null || composite.isDisposed()) { it.remove(); continue; } composite.setExpanded(expanded); } FormEditor editor = editorBarWrap.getEditor(); IFormPage formPage = editor.getActivePageInstance(); if (formPage != null) { formPage.getManagedForm().getForm().reflow(true); } } }