mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
added scroll from source action to titlebar
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1004 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -21,6 +21,7 @@ import com.intellij.history.LocalHistory;
|
||||
import com.intellij.history.LocalHistoryAction;
|
||||
import com.intellij.ide.*;
|
||||
import com.intellij.ide.FileEditorProvider;
|
||||
import com.intellij.ide.actions.CollapseAllToolbarAction;
|
||||
import com.intellij.ide.impl.ProjectViewSelectInTarget;
|
||||
import com.intellij.ide.projectView.HelpID;
|
||||
import com.intellij.ide.projectView.ProjectView;
|
||||
@@ -69,6 +70,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.*;
|
||||
import com.intellij.openapi.wm.ex.ToolWindowManagerAdapter;
|
||||
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
|
||||
import com.intellij.openapi.wm.impl.InternalDecorator;
|
||||
import com.intellij.openapi.wm.impl.ToolWindowImpl;
|
||||
import com.intellij.openapi.wm.impl.content.ToolWindowContentUi;
|
||||
import com.intellij.psi.*;
|
||||
@@ -471,6 +473,7 @@ public class ProjectViewImpl extends ProjectView implements PersistentStateCompo
|
||||
myViewContentPanel.revalidate();
|
||||
myViewContentPanel.repaint();
|
||||
createToolbarActions();
|
||||
updateTitleActions();
|
||||
|
||||
newPane.setTreeChangeListener(myTreeChangeListener);
|
||||
myAutoScrollToSourceHandler.install(newPane.myTree);
|
||||
@@ -506,6 +509,25 @@ public class ProjectViewImpl extends ProjectView implements PersistentStateCompo
|
||||
myAutoScrollToSourceHandler.onMouseClicked(newPane.myTree);
|
||||
}
|
||||
|
||||
private void updateTitleActions() {
|
||||
final ToolWindow window = ToolWindowManager.getInstance(myProject).getToolWindow("Project");
|
||||
if (window == null) return;
|
||||
final InternalDecorator decorator = ((ToolWindowImpl)window).getDecorator();
|
||||
ScrollFromSourceAction scrollAction = null;
|
||||
CollapseAllToolbarAction collapseAction = null;
|
||||
for (AnAction action : myActionGroup.getChildren(null)) {
|
||||
if (action instanceof ScrollFromSourceAction) {
|
||||
scrollAction = (ScrollFromSourceAction)action;
|
||||
myActionGroup.remove(scrollAction);
|
||||
}
|
||||
if (action instanceof CollapseAllToolbarAction) {
|
||||
collapseAction = (CollapseAllToolbarAction)action;
|
||||
myActionGroup.remove(collapseAction);
|
||||
}
|
||||
}
|
||||
decorator.setTitleActions(new AnAction[] {scrollAction, collapseAction});
|
||||
}
|
||||
|
||||
// public for tests
|
||||
public synchronized void setupImpl(final ToolWindow toolWindow) {
|
||||
setupImpl(toolWindow, true);
|
||||
@@ -670,7 +692,7 @@ public class ProjectViewImpl extends ProjectView implements PersistentStateCompo
|
||||
return true;
|
||||
}
|
||||
}, getComponent());
|
||||
myActionGroup.add(collapseAllAction);
|
||||
//myActionGroup.add(collapseAllAction);
|
||||
getCurrentProjectViewPane().addToolbarActions(myActionGroup);
|
||||
}
|
||||
|
||||
@@ -1732,7 +1754,7 @@ public class ProjectViewImpl extends ProjectView implements PersistentStateCompo
|
||||
|
||||
private class ScrollFromSourceAction extends AnAction implements DumbAware {
|
||||
private ScrollFromSourceAction() {
|
||||
super("Scroll from Source", "Select the file open in the active editor", IconLoader.getIcon("/general/autoscrollFromSource.png"));
|
||||
super("Scroll from Source", "Select the file open in the active editor", IconLoader.getIcon("/general/locate.png"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -334,6 +334,10 @@ public final class InternalDecorator extends JPanel implements Queryable, TypeSa
|
||||
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||
}
|
||||
|
||||
public void setTitleActions(AnAction[] actions) {
|
||||
myHeader.setAdditionalTitleActions(actions);
|
||||
}
|
||||
|
||||
private static class InnerPanelBorder implements Border {
|
||||
|
||||
private final ToolWindow myWindow;
|
||||
|
||||
@@ -63,6 +63,7 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
private static final Icon ourHideDownIcon = IconLoader.getIcon("/general/hideDownPart.png");
|
||||
|
||||
private static final Icon ourSettingsIcon = IconLoader.getIcon("/general/gear.png");
|
||||
private static final Icon ourSeparatorIcon = IconLoader.getIcon("/general/divider.png");
|
||||
|
||||
private ToolWindow myToolWindow;
|
||||
private WindowInfoImpl myInfo;
|
||||
@@ -70,6 +71,8 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
private BufferedImage myImage;
|
||||
private BufferedImage myActiveImage;
|
||||
private ToolWindowType myImageType;
|
||||
private JPanel myButtonPanel;
|
||||
private final ToolWindowHeader.ActionButton myGearButton;
|
||||
|
||||
public ToolWindowHeader(final ToolWindowImpl toolWindow, WindowInfoImpl info, @NotNull final Producer<ActionGroup> gearProducer) {
|
||||
setLayout(new BorderLayout());
|
||||
@@ -106,12 +109,13 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
eastPanel.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3));
|
||||
add(eastPanel, BorderLayout.EAST);
|
||||
|
||||
eastPanel.add(new ActionButton(new AnAction() {
|
||||
myGearButton = new ActionButton(new AnAction() {
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final InputEvent inputEvent = e.getInputEvent();
|
||||
final ActionPopupMenu popupMenu =
|
||||
((ActionManagerImpl)ActionManager.getInstance()).createActionPopupMenu(ToolWindowContentUi.POPUP_PLACE, gearProducer.produce(), new MenuItemPresentationFactory(true));
|
||||
((ActionManagerImpl)ActionManager.getInstance())
|
||||
.createActionPopupMenu(ToolWindowContentUi.POPUP_PLACE, gearProducer.produce(), new MenuItemPresentationFactory(true));
|
||||
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
@@ -122,9 +126,7 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
|
||||
popupMenu.getComponent().show(inputEvent.getComponent(), x, y);
|
||||
}
|
||||
}, ourSettingsIcon));
|
||||
|
||||
eastPanel.add(Box.createHorizontalStrut(3));
|
||||
}, ourSettingsIcon);
|
||||
|
||||
myHideButton = new ActionButton(new HideAction() {
|
||||
@Override
|
||||
@@ -137,7 +139,7 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
sideHidden();
|
||||
}
|
||||
},
|
||||
ourHideLeftSideIcon, null, null
|
||||
ourHideLeftSideIcon, null, null
|
||||
) {
|
||||
@Override
|
||||
protected Icon getActiveIcon() {
|
||||
@@ -150,7 +152,8 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
}
|
||||
};
|
||||
|
||||
eastPanel.add(myHideButton);
|
||||
addDefaultActions(eastPanel);
|
||||
myButtonPanel = eastPanel;
|
||||
|
||||
addMouseListener(new PopupHandler() {
|
||||
public void invokePopup(final Component comp, final int x, final int y) {
|
||||
@@ -180,6 +183,13 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
setBorder(BorderFactory.createEmptyBorder(TabsUtil.TABS_BORDER, 1, TabsUtil.TABS_BORDER, 1));
|
||||
}
|
||||
|
||||
private void addDefaultActions(JPanel eastPanel) {
|
||||
eastPanel.add(myGearButton);
|
||||
eastPanel.add(Box.createHorizontalStrut(6));
|
||||
eastPanel.add(myHideButton);
|
||||
eastPanel.add(Box.createHorizontalStrut(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
removeAll();
|
||||
@@ -192,7 +202,23 @@ public abstract class ToolWindowHeader extends JPanel implements Disposable {
|
||||
myHideButton.updateTooltip();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void setAdditionalTitleActions(AnAction[] actions) {
|
||||
myButtonPanel.removeAll();
|
||||
boolean actionAdded = false;
|
||||
for (AnAction action : actions) {
|
||||
if (action == null) continue;
|
||||
myButtonPanel.add(new ActionButton(action, action.getTemplatePresentation().getIcon()));
|
||||
myButtonPanel.add(Box.createHorizontalStrut(7));
|
||||
actionAdded = true;
|
||||
}
|
||||
if (actionAdded) {
|
||||
myButtonPanel.add(new JLabel(ourSeparatorIcon));
|
||||
myButtonPanel.add(Box.createHorizontalStrut(6));
|
||||
}
|
||||
addDefaultActions(myButtonPanel);
|
||||
}
|
||||
|
||||
private static Icon getHideToolWindowIcon(ToolWindow toolWindow) {
|
||||
ToolWindowAnchor anchor = toolWindow.getAnchor();
|
||||
if (anchor == ToolWindowAnchor.BOTTOM) {
|
||||
|
||||
Reference in New Issue
Block a user