mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
revert toolbar decorator using
This commit is contained in:
+69
-75
@@ -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<FileTemplate> templates = new ArrayList<FileTemplate>();
|
||||
final List<FileTemplate> internalTemplates = new ArrayList<FileTemplate>();
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user