From 586ad4ba3116f7368414867cf472ab27eeb03e75 Mon Sep 17 00:00:00 2001 From: Evgeny Zakrevsky Date: Tue, 14 Aug 2012 23:22:33 +0400 Subject: [PATCH] revert toolbar decorator using --- .../impl/AllFileTemplatesConfigurable.java | 144 +++++++++--------- 1 file changed, 69 insertions(+), 75 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/AllFileTemplatesConfigurable.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/AllFileTemplatesConfigurable.java index e0961cd1c23f..d88f01007bcf 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/AllFileTemplatesConfigurable.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/AllFileTemplatesConfigurable.java @@ -21,8 +21,7 @@ import com.intellij.ide.IdeBundle; import com.intellij.ide.fileTemplates.*; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.ActionToolbarPosition; -import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; @@ -34,7 +33,8 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Disposer; -import com.intellij.ui.*; +import com.intellij.ui.ScrollPaneFactory; +import com.intellij.ui.TabbedPaneWrapper; import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.PlatformIcons; @@ -72,6 +72,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con private FileTemplateTab myIncludesList; private FileTemplateTab myCodeTemplatesList; private FileTemplateTab myJ2eeTemplatesList; + private JComponent myToolBar; private TabbedPaneWrapper myTabbedPane; private FileTemplateConfigurable myEditor; private boolean myModified = false; @@ -225,71 +226,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con myTabbedPane = new TabbedPaneWrapper(myUIDisposable); myTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); for (FileTemplateTab tab : myTabs) { - ToolbarDecorator toolbarDecorator; - if (tab.getComponent() instanceof JList) { - toolbarDecorator = ToolbarDecorator.createDecorator((JList)tab.getComponent()); - } - else if (tab.getComponent() instanceof JTree) { - toolbarDecorator = ToolbarDecorator.createDecorator((JTree)tab.getComponent()); - } - else { - continue; - } - - toolbarDecorator.setAddAction(new AnActionButtonRunnable() { - @Override - public void run(AnActionButton button) { - onAdd(); - } - }).setAddActionUpdater(new AnActionButtonUpdater() { - @Override - public boolean isEnabled(AnActionEvent e) { - return !(myCurrentTab == myCodeTemplatesList || myCurrentTab == myJ2eeTemplatesList); - } - }).setRemoveAction(new AnActionButtonRunnable() { - @Override - public void run(AnActionButton button) { - onRemove(); - } - }).setRemoveActionUpdater(new AnActionButtonUpdater() { - @Override - public boolean isEnabled(AnActionEvent e) { - FileTemplate selectedItem = myCurrentTab.getSelectedTemplate(); - return selectedItem != null && !isInternalTemplate(selectedItem.getName(), myCurrentTab.getTitle()); - } - }).addExtraAction(new AnActionButton(IdeBundle.message("action.copy.template"), PlatformIcons.COPY_ICON) { - @Override - public void actionPerformed(AnActionEvent e) { - onClone(); - } - - @Override - public void updateButton(AnActionEvent e) { - super.updateButton(e); - if (e.getPresentation().isEnabled()) { - e.getPresentation().setEnabled( - myCurrentTab != myCodeTemplatesList && myCurrentTab != myJ2eeTemplatesList && myCurrentTab.getSelectedTemplate() != null); - } - } - }).addExtraAction(new AnActionButton(IdeBundle.message("action.reset.to.default"), AllIcons.Actions.Reset) { - @Override - public void actionPerformed(AnActionEvent e) { - onReset(); - } - - @Override - public void updateButton(AnActionEvent e) { - super.updateButton(e); - if (e.getPresentation().isEnabled()) { - final FileTemplate selectedItem = myCurrentTab.getSelectedTemplate(); - e.getPresentation().setEnabled(selectedItem instanceof BundledFileTemplate && !selectedItem.isDefault()); - } - } - }); - toolbarDecorator.disableUpDownActions().setToolbarPosition(ActionToolbarPosition.BOTTOM); - JPanel panel = toolbarDecorator.createPanel(); - panel.setBorder(null); - myTabbedPane.addTab(tab.getTitle(), panel); + myTabbedPane.addTab(tab.getTitle(), ScrollPaneFactory.createScrollPane(tab.getComponent())); } myTabbedPane.addChangeListener(new ChangeListener() { @@ -298,6 +235,61 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con } }); + DefaultActionGroup group = new DefaultActionGroup(); + AnAction removeAction = new AnAction(IdeBundle.message("action.remove.template"), null, AllIcons.General.Remove) { + public void actionPerformed(AnActionEvent e) { + onRemove(); + } + + public void update(AnActionEvent e) { + super.update(e); + FileTemplate selectedItem = myCurrentTab.getSelectedTemplate(); + e.getPresentation().setEnabled(selectedItem != null && !isInternalTemplate(selectedItem.getName(), myCurrentTab.getTitle())); + } + }; + AnAction addAction = new AnAction(IdeBundle.message("action.create.template"), null, AllIcons.General.Add) { + public void actionPerformed(AnActionEvent e) { + onAdd(); + } + + public void update(AnActionEvent e) { + super.update(e); + e.getPresentation().setEnabled(!(myCurrentTab == myCodeTemplatesList || myCurrentTab == myJ2eeTemplatesList)); + } + }; + AnAction cloneAction = new AnAction(IdeBundle.message("action.copy.template"), null, PlatformIcons.COPY_ICON) { + public void actionPerformed(AnActionEvent e) { + onClone(); + } + + public void update(AnActionEvent e) { + super.update(e); + e.getPresentation().setEnabled(myCurrentTab != myCodeTemplatesList + && myCurrentTab != myJ2eeTemplatesList + && myCurrentTab.getSelectedTemplate() != null); + } + }; + AnAction resetAction = new AnAction(IdeBundle.message("action.reset.to.default"), null, AllIcons.Actions.Reset) { + public void actionPerformed(AnActionEvent e) { + onReset(); + } + + public void update(AnActionEvent e) { + super.update(e); + final FileTemplate selectedItem = myCurrentTab.getSelectedTemplate(); + e.getPresentation().setEnabled(selectedItem instanceof BundledFileTemplate && !selectedItem.isDefault()); + } + }; + group.add(addAction); + group.add(removeAction); + group.add(cloneAction); + group.add(resetAction); + addAction.registerCustomShortcutSet(CommonShortcuts.INSERT, myCurrentTab.getComponent()); + removeAction.registerCustomShortcutSet(CommonShortcuts.DELETE, + myCurrentTab.getComponent()); + + myToolBar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, group, true).getComponent(); + myEditor = new FileTemplateConfigurable(); myEditor.addChangeListener(new ChangeListener() { @@ -309,6 +301,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con myMainPanel = new JPanel(new BorderLayout()); Splitter splitter = new Splitter(); JPanel leftPanel = new JPanel(new BorderLayout()); + leftPanel.add(myToolBar, BorderLayout.NORTH); leftPanel.add(myTabbedPane.getComponent(), BorderLayout.CENTER); splitter.setFirstComponent(leftPanel); myEditorComponent = myEditor.createComponent(); @@ -408,7 +401,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con } private static boolean isInternalTemplateName(final String templateName) { - for (InternalTemplateBean bean : Extensions.getExtensions(InternalTemplateBean.EP_NAME)) { + for(InternalTemplateBean bean: Extensions.getExtensions(InternalTemplateBean.EP_NAME)) { if (Comparing.strEqual(templateName, bean.name)) { return true; } @@ -418,13 +411,13 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con private void initLists() { final FileTemplateManager templateManager = FileTemplateManager.getInstance(); - + final FileTemplate[] internalTemplates = templateManager.getInternalTemplates(); myInternalTemplateNames.clear(); for (FileTemplate internalTemplate : internalTemplates) { myInternalTemplateNames.add(((FileTemplateBase)internalTemplate).getQualifiedName()); } - + myTemplatesList.init(ArrayUtil.mergeArrays(internalTemplates, templateManager.getAllTemplates())); myIncludesList.init(templateManager.getAllPatterns()); if (myCodeTemplatesList != null) { @@ -469,7 +462,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con } allNames.add(currName); } - + if (itemWithError != null) { final boolean _errorInName = errorInName; myTabbedPane.setSelectedIndex(Arrays.asList(myTabs).indexOf(list)); @@ -503,14 +496,14 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con myModified = true; myEditor.apply(); } - + for (FileTemplateTab list : myTabs) { checkCanApply(list); } final FileTemplateManager templatesManager = FileTemplateManager.getInstance(); // Apply templates - + final List templates = new ArrayList(); final List internalTemplates = new ArrayList(); for (FileTemplate template : myTemplatesList.getTemplates()) { @@ -521,7 +514,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con templates.add(template); } } - + templatesManager.setTemplates(FileTemplateManager.DEFAULT_TEMPLATES_CATEGORY, templates); templatesManager.setTemplates(FileTemplateManager.INTERNAL_TEMPLATES_CATEGORY, internalTemplates); templatesManager.setTemplates(FileTemplateManager.INCLUDES_TEMPLATES_CATEGORY, Arrays.asList(myIncludesList.getTemplates())); @@ -584,6 +577,7 @@ public class AllFileTemplatesConfigurable implements SearchableConfigurable, Con myUIDisposable = null; } myTabbedPane = null; + myToolBar = null; myTabs = null; myCurrentTab = null; myTemplatesList = null;