From baa49c728a2954523c11e9fe82d36755b6a04121 Mon Sep 17 00:00:00 2001 From: Kirill Kalishev Date: Tue, 21 Oct 2008 11:36:54 +0400 Subject: [PATCH] settings ui - actions update fixes + separator rendering fixes --- .../intellij/ui/navigation/NavigationAction.java | 6 +++--- .../src/com/intellij/ide/IdeEventQueue.java | 5 +++++ .../actionSystem/impl/ActionToolbarImpl.java | 21 +++++++++++++-------- .../openapi/options/newEditor/OptionsEditor.java | 20 ++++++++++++++++++-- .../openapi/options/newEditor/OptionsTree.java | 10 ++++++++-- 5 files changed, 47 insertions(+), 15 deletions(-) diff --git a/platform-api/src/com/intellij/ui/navigation/NavigationAction.java b/platform-api/src/com/intellij/ui/navigation/NavigationAction.java index 6bf4349345..95dcb0e0b0 100644 --- a/platform-api/src/com/intellij/ui/navigation/NavigationAction.java +++ b/platform-api/src/com/intellij/ui/navigation/NavigationAction.java @@ -13,14 +13,14 @@ abstract class NavigationAction extends AnAction { private ShadowAction myShadow; protected NavigationAction(JComponent c, final String originalActionID) { - final AnAction back = ActionManager.getInstance().getAction(originalActionID); - myShadow = new ShadowAction(this, back, c); + final AnAction original = ActionManager.getInstance().getAction(originalActionID); + myShadow = new ShadowAction(this, original, c); + getTemplatePresentation().setIcon(original.getTemplatePresentation().getIcon()); } public final void update(final AnActionEvent e) { e.getPresentation().setEnabled(getHistory(e) != null); if (e.getPresentation().isEnabled()) { - e.getPresentation().setIcon(getTemplatePresentation().getIcon()); doUpdate(e); } } diff --git a/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform-impl/src/com/intellij/ide/IdeEventQueue.java index e1f8bbe52f..2d724d5628 100644 --- a/platform-impl/src/com/intellij/ide/IdeEventQueue.java +++ b/platform-impl/src/com/intellij/ide/IdeEventQueue.java @@ -395,6 +395,11 @@ public class IdeEventQueue extends EventQueue { } } + if (e instanceof WindowEvent) { + ActivityTracker.getInstance().inc(); + } + + // Process "idle" and "activity" listeners if (e instanceof KeyEvent || e instanceof MouseEvent) { ActivityTracker.getInstance().inc(); diff --git a/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java b/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java index a5c5082d44..b34077fcdb 100644 --- a/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java +++ b/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java @@ -100,6 +100,18 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { setLayout(new BorderLayout()); setOrientation(horizontal ? SwingConstants.HORIZONTAL : SwingConstants.VERTICAL); + updateActions(); + + // + keymapManager.addKeymapManagerListener(new WeakKeymapManagerListener(keymapManager, myKeymapManagerListener)); + actionManager.addTimerListener(500, new WeakTimerListener(actionManager, myTimerListener)); + // If the panel doesn't handle mouse event then it will be passed to its parent. + // It means that if the panel is in slidindg mode then the focus goes to the editor + // and panel will be automatically hidden. + enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK); + } + + private void updateActions() { final Application app = ApplicationManager.getApplication(); if (!app.isUnitTestMode() && !app.isHeadlessEnvironment()) { if (app.isDispatchThread()) { @@ -112,14 +124,6 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { }); } } - - // - keymapManager.addKeymapManagerListener(new WeakKeymapManagerListener(keymapManager, myKeymapManagerListener)); - actionManager.addTimerListener(500, new WeakTimerListener(actionManager, myTimerListener)); - // If the panel doesn't handle mouse event then it will be passed to its parent. - // It means that if the panel is in slidindg mode then the focus goes to the editor - // and panel will be automatically hidden. - enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK); } public JComponent getComponent() { @@ -698,6 +702,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { public void setTargetComponent(final JComponent component) { myTargetComponent = component; + updateActions(); } protected DataContext getToolbarDataContext() { diff --git a/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsEditor.java b/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsEditor.java index 08ba329d2c..e3a2cfbe73 100644 --- a/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsEditor.java +++ b/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsEditor.java @@ -547,9 +547,9 @@ public class OptionsEditor extends JPanel implements DataProvider, Place.Navigat if (myFiltered == null || !myFiltered.contains(current)) { if (myHits != null) { if (myHits.getNameHits().size() > 0) { - toSelect = myHits.getNameHits().iterator().next(); + toSelect = suggestToSelect(myHits.getNameHits()); } else if (myHits.getContentHits().size() > 0) { - toSelect = myHits.getContentHits().iterator().next(); + toSelect = suggestToSelect(myHits.getContentHits()); } } } @@ -562,8 +562,24 @@ public class OptionsEditor extends JPanel implements DataProvider, Place.Navigat } private boolean isEmptyParent(Configurable configurable) { + if (configurable instanceof SearchableConfigurable.Parent) { + return !((SearchableConfigurable.Parent)configurable).hasOwnContent(); + } return false; } + + @Nullable + private Configurable suggestToSelect(Set set) { + Configurable candidate = null; + for (Iterator iterator = set.iterator(); iterator.hasNext();) { + Configurable each = iterator.next(); + if (!isEmptyParent(each)) return each; + candidate = each; + } + + return candidate; + } + } public ActionCallback navigateTo(@Nullable final Place place, final boolean requestFocus) { diff --git a/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsTree.java b/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsTree.java index 2cb6973610..25c74981c0 100644 --- a/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsTree.java +++ b/platform-impl/src/com/intellij/openapi/options/newEditor/OptionsTree.java @@ -275,7 +275,13 @@ public class OptionsTree extends JPanel implements Disposable, OptionsEditorColl } int forcedWidth = 2000; - final TreePath path = tree.getPathForRow(row); + TreePath path = tree.getPathForRow(row); + if (path == null) { + if (value instanceof DefaultMutableTreeNode) { + path = new TreePath(((DefaultMutableTreeNode)value).getPath()); + } + } + final boolean toStretch = tree.isVisible() && path != null; if (toStretch) { @@ -291,7 +297,7 @@ public class OptionsTree extends JPanel implements Disposable, OptionsEditorColl int indent = (left + right) * nestingLevel + (treeInsets != null ? treeInsets.left + treeInsets.right : 0); forcedWidth = visibleRect.width > 0 ? visibleRect.width - indent: forcedWidth; - } + } result = configureComponent(base.getText(), base.getText(), null, null, selected, group != null, group != null ? group.getDisplayName() : null, forcedWidth); -- 2.11.4.GIT