mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-142359 Find/Replace: move checkboxes back
This commit is contained in:
@@ -20,7 +20,6 @@ import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.IdeActions;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.testFramework.fixtures.EditorMouseFixture;
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
|
||||
|
||||
@@ -140,7 +139,7 @@ public class FindInEditorMultiCaretTest extends LightPlatformCodeInsightFixtureT
|
||||
private void setTextToFind(String text) {
|
||||
EditorSearchComponent editorSearchComponent = getEditorSearchComponent();
|
||||
assertNotNull(editorSearchComponent);
|
||||
JTextComponent searchField = editorSearchComponent.getSearchField();
|
||||
JTextComponent searchField = editorSearchComponent.getSearchTextComponent();
|
||||
assertNotNull(searchField);
|
||||
for (int i = 0; i <= text.length(); i++) {
|
||||
searchField.setText(text.substring(0, i)); // emulate typing chars one by one
|
||||
@@ -149,22 +148,12 @@ public class FindInEditorMultiCaretTest extends LightPlatformCodeInsightFixtureT
|
||||
|
||||
private void nextOccurrence() {
|
||||
final EditorSearchComponent editorSearchComponent = getEditorSearchComponent();
|
||||
executeAction(new NextOccurrenceAction(editorSearchComponent, new Getter<JTextComponent>() {
|
||||
@Override
|
||||
public JTextComponent get() {
|
||||
return editorSearchComponent.getSearchField();
|
||||
}
|
||||
}));
|
||||
executeAction(new NextOccurrenceAction(editorSearchComponent, editorSearchComponent.getSearchTextComponent()));
|
||||
}
|
||||
|
||||
private void prevOccurrence() {
|
||||
final EditorSearchComponent editorSearchComponent = getEditorSearchComponent();
|
||||
executeAction(new PrevOccurrenceAction(editorSearchComponent, new Getter<JTextComponent>() {
|
||||
@Override
|
||||
public JTextComponent get() {
|
||||
return editorSearchComponent.getSearchField();
|
||||
}
|
||||
}));
|
||||
executeAction(new PrevOccurrenceAction(editorSearchComponent, editorSearchComponent.getSearchTextComponent()));
|
||||
}
|
||||
|
||||
private void addOccurrence() {
|
||||
@@ -201,7 +190,7 @@ public class FindInEditorMultiCaretTest extends LightPlatformCodeInsightFixtureT
|
||||
|
||||
private void closeFind() {
|
||||
EditorSearchComponent editorSearchComponent = getEditorSearchComponent();
|
||||
executeAction(new CloseOnESCAction(editorSearchComponent, editorSearchComponent.getSearchField()));
|
||||
executeAction(new CloseOnESCAction(editorSearchComponent, editorSearchComponent.getSearchTextComponent()));
|
||||
}
|
||||
|
||||
private static void executeAction(EditorHeaderAction action) {
|
||||
|
||||
@@ -24,7 +24,6 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.PatternSyntaxException;
|
||||
@@ -105,7 +104,6 @@ public class FindModel extends UserDataHolderBase implements Cloneable {
|
||||
if (!multiline) {
|
||||
initStringToFindNoMultiline(this, getStringToFind());
|
||||
}
|
||||
|
||||
isMultiline = multiline;
|
||||
notifyObservers();
|
||||
}
|
||||
@@ -141,6 +139,7 @@ public class FindModel extends UserDataHolderBase implements Cloneable {
|
||||
* @param model the model to copy settings from.
|
||||
*/
|
||||
public void copyFrom(FindModel model) {
|
||||
boolean changed = !equals(model);
|
||||
myStringToFind = model.myStringToFind;
|
||||
myStringToReplace = model.myStringToReplace;
|
||||
isReplaceState = model.isReplaceState;
|
||||
@@ -166,10 +165,11 @@ public class FindModel extends UserDataHolderBase implements Cloneable {
|
||||
customScope = model.customScope;
|
||||
isCustomScope = model.isCustomScope;
|
||||
isFindAll = model.isFindAll;
|
||||
|
||||
searchContext = model.searchContext;
|
||||
|
||||
isMultiline = model.isMultiline;
|
||||
if (changed) {
|
||||
notifyObservers();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -946,20 +946,4 @@ public class FindModel extends UserDataHolderBase implements Cloneable {
|
||||
|
||||
return pattern;
|
||||
}
|
||||
|
||||
public String getStateDescription() {
|
||||
ArrayList<String> state = new ArrayList<String>();
|
||||
if (isCaseSensitive()) state.add("Match Case");
|
||||
if (isRegularExpressions()) state.add("Regex");
|
||||
if (isWholeWordsOnly()) state.add("Words");
|
||||
if (isInCommentsOnly()) state.add("In Comments Only");
|
||||
if (isInStringLiteralsOnly()) state.add("In Literals Only");
|
||||
if (isExceptComments()) state.add("Except Comments");
|
||||
if (isExceptStringLiterals()) state.add("Except Literals");
|
||||
if (isExceptCommentsAndStringLiterals()) state.add("Except Comments and Literals");
|
||||
if (isPreserveCase()) state.add("Preserve Case");
|
||||
if (!isGlobal()) state.add("In Selection");
|
||||
String join = StringUtil.join(state, ", ");
|
||||
return join.isEmpty()? "" : "(" + join+")";
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -197,9 +197,9 @@ public class HighlightUsagesHandler extends HighlightHandlerBase {
|
||||
final EditorSearchComponent oldSearch = (EditorSearchComponent)oldHeader;
|
||||
if (oldSearch.hasMatches()) {
|
||||
String oldText = oldSearch.getTextInField();
|
||||
if (!oldSearch.isRegexp()) {
|
||||
if (!oldSearch.getFindModel().isRegularExpressions()) {
|
||||
oldText = StringUtil.escapeToRegexp(oldText);
|
||||
oldSearch.setRegexp(true);
|
||||
oldSearch.getFindModel().setRegularExpressions(true);
|
||||
}
|
||||
|
||||
String newText = oldText + '|' + StringUtil.escapeToRegexp(text);
|
||||
@@ -209,7 +209,7 @@ public class HighlightUsagesHandler extends HighlightHandlerBase {
|
||||
}
|
||||
|
||||
final EditorSearchComponent header = new EditorSearchComponent(editor, project);
|
||||
header.setRegexp(false);
|
||||
header.getFindModel().setRegularExpressions(false);
|
||||
editor.setHeaderComponent(header);
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.find;
|
||||
|
||||
import com.intellij.ide.ui.laf.darcula.DarculaUIUtil;
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButton;
|
||||
import com.intellij.openapi.actionSystem.impl.InplaceActionButtonLook;
|
||||
import com.intellij.ui.Gray;
|
||||
import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.ui.components.panels.NonOpaquePanel;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import java.awt.*;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
|
||||
class SearchWrapper extends NonOpaquePanel implements PropertyChangeListener, FocusListener {
|
||||
private final JTextComponent myToWrap;
|
||||
|
||||
public SearchWrapper(JTextComponent toWrap, AnAction showHistoryAction) {
|
||||
myToWrap = toWrap;
|
||||
setBorder(JBUI.Borders.empty(6, 6, 6, 8));
|
||||
setLayout(new BorderLayout(JBUI.scale(4), 0));
|
||||
myToWrap.addPropertyChangeListener("background", this);
|
||||
myToWrap.addFocusListener(this);
|
||||
myToWrap.setBorder(null);
|
||||
myToWrap.setOpaque(false);
|
||||
JBScrollPane scrollPane = new JBScrollPane(myToWrap,
|
||||
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
|
||||
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
scrollPane.getVerticalScrollBar().setBackground(UIUtil.TRANSPARENT_COLOR);
|
||||
scrollPane.getViewport().setBorder(null);
|
||||
scrollPane.getViewport().setOpaque(false);
|
||||
scrollPane.setBorder(JBUI.Borders.empty(0, 0, 0, 2));
|
||||
scrollPane.setOpaque(false);
|
||||
ActionButton button =
|
||||
new ActionButton(showHistoryAction, showHistoryAction.getTemplatePresentation(), ActionPlaces.UNKNOWN, new Dimension(JBUI.scale(16), JBUI.scale(16)));
|
||||
button.setLook(new InplaceActionButtonLook());
|
||||
JPanel p = new NonOpaquePanel(new BorderLayout());
|
||||
p.add(button, BorderLayout.NORTH);
|
||||
add(p, BorderLayout.WEST);
|
||||
add(scrollPane, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getMinimumSize() {
|
||||
return getPreferredSize();//myToWrap.getPreferredScrollableViewportSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void focusGained(FocusEvent e) {
|
||||
repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void focusLost(FocusEvent e) {
|
||||
repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paint(Graphics graphics) {
|
||||
Graphics2D g = (Graphics2D)graphics.create();
|
||||
try {
|
||||
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
|
||||
Rectangle r = new Rectangle(getSize());
|
||||
r.x += JBUI.scale(4);
|
||||
r.y += JBUI.scale(3);
|
||||
r.width -= JBUI.scale(9);
|
||||
r.height -= JBUI.scale(6);
|
||||
int arcSize = Math.min(25, r.height - 1) - 6;
|
||||
g.setColor(myToWrap.getBackground());
|
||||
boolean hasFocus = myToWrap.hasFocus();
|
||||
g.fillRoundRect(r.x, r.y + 1, r.width, r.height - 2, arcSize, arcSize);
|
||||
g.setColor(myToWrap.isEnabled() ? Gray._100 : Gray._83);
|
||||
|
||||
if (hasFocus) {
|
||||
DarculaUIUtil.paintSearchFocusRing(g, r, arcSize + 6);
|
||||
}
|
||||
else {
|
||||
g.drawRoundRect(r.x, r.y, r.width, r.height - 1, arcSize, arcSize);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
g.dispose();
|
||||
}
|
||||
super.paint(graphics);
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -29,18 +29,18 @@ public class AddOccurrenceAction extends EditorHeaderAction implements DumbAware
|
||||
copyFrom(ActionManager.getInstance().getAction(IdeActions.ACTION_SELECT_NEXT_OCCURENCE));
|
||||
getTemplatePresentation().setIcon(AllIcons.Actions.AddMulticaret);
|
||||
|
||||
registerShortcutsForComponent(Arrays.asList(getShortcutSet().getShortcuts()), editorSearchComponent.getSearchField());
|
||||
registerShortcutsForComponent(Arrays.asList(getShortcutSet().getShortcuts()), editorSearchComponent.getSearchTextComponent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
getEditorSearchComponent().addNextOccurrence();
|
||||
myEditorSearchComponent.addNextOccurrence();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
boolean isFind = !getEditorSearchComponent().getFindModel().isReplaceState();
|
||||
boolean hasMatches = getEditorSearchComponent().hasMatches();
|
||||
boolean isFind = !myEditorSearchComponent.getFindModel().isReplaceState();
|
||||
boolean hasMatches = myEditorSearchComponent.hasMatches();
|
||||
e.getPresentation().setVisible(isFind);
|
||||
e.getPresentation().setEnabled(isFind && hasMatches);
|
||||
}}
|
||||
|
||||
@@ -37,6 +37,6 @@ public class CloseOnESCAction extends EditorHeaderAction implements DumbAware {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
getEditorSearchComponent().close();
|
||||
myEditorSearchComponent.close();
|
||||
}
|
||||
}
|
||||
|
||||
+5
-10
@@ -25,21 +25,16 @@ import javax.swing.*;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class EditorHeaderAction extends AnAction {
|
||||
private final EditorSearchComponent myEditorSearchComponent;
|
||||
protected final EditorSearchComponent myEditorSearchComponent;
|
||||
|
||||
protected EditorHeaderAction(EditorSearchComponent editorSearchComponent) {
|
||||
myEditorSearchComponent = editorSearchComponent;
|
||||
}
|
||||
|
||||
protected void registerShortcutsForComponent(List<Shortcut> shortcuts, JComponent component) {
|
||||
registerCustomShortcutSet(
|
||||
new CustomShortcutSet(shortcuts.toArray(new Shortcut[shortcuts.size()])),
|
||||
component);
|
||||
}
|
||||
|
||||
public EditorSearchComponent getEditorSearchComponent() {
|
||||
return myEditorSearchComponent;
|
||||
}
|
||||
|
||||
protected EditorHeaderAction(EditorSearchComponent editorSearchComponent) {
|
||||
|
||||
myEditorSearchComponent = editorSearchComponent;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-11
@@ -10,15 +10,18 @@ import javax.swing.*;
|
||||
|
||||
public abstract class EditorHeaderToggleAction extends CheckboxAction implements DumbAware {
|
||||
|
||||
protected final EditorSearchComponent myEditorSearchComponent;
|
||||
|
||||
protected EditorHeaderToggleAction(EditorSearchComponent editorSearchComponent, String text) {
|
||||
super(text);
|
||||
myEditorSearchComponent = editorSearchComponent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean displayTextInToolbar() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public EditorSearchComponent getEditorSearchComponent() {
|
||||
return myEditorSearchComponent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
super.update(e);
|
||||
@@ -31,11 +34,4 @@ public abstract class EditorHeaderToggleAction extends CheckboxAction implements
|
||||
customComponent.setOpaque(false);
|
||||
return customComponent;
|
||||
}
|
||||
|
||||
private final EditorSearchComponent myEditorSearchComponent;
|
||||
|
||||
protected EditorHeaderToggleAction(EditorSearchComponent editorSearchComponent, String text) {
|
||||
super(text);
|
||||
myEditorSearchComponent = editorSearchComponent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +20,7 @@ import com.intellij.find.FindManager;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.find.FindUtil;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.IdeActions;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -56,29 +53,28 @@ public class FindAllAction extends EditorHeaderAction implements DumbAware {
|
||||
final AnAction findUsages = ActionManager.getInstance().getAction(IdeActions.ACTION_FIND_USAGES);
|
||||
if (findUsages != null) {
|
||||
registerCustomShortcutSet(findUsages.getShortcutSet(),
|
||||
editorSearchComponent.getSearchField());
|
||||
editorSearchComponent.getSearchTextComponent());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(final AnActionEvent e) {
|
||||
super.update(e);
|
||||
Editor editor = getEditorSearchComponent().getEditor();
|
||||
Project project = editor.getProject();
|
||||
Editor editor = e.getData(CommonDataKeys.EDITOR_EVEN_IF_INACTIVE);
|
||||
Project project = e.getProject();
|
||||
if (project != null && !project.isDisposed()) {
|
||||
e.getPresentation().setEnabled(getEditorSearchComponent().hasMatches() &&
|
||||
e.getPresentation().setEnabled(editor != null && myEditorSearchComponent.hasMatches() &&
|
||||
PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()) != null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
Editor editor = getEditorSearchComponent().getEditor();
|
||||
Project project = editor.getProject();
|
||||
if (project != null && !project.isDisposed()) {
|
||||
Editor editor = e.getData(CommonDataKeys.EDITOR_EVEN_IF_INACTIVE);
|
||||
Project project = e.getProject();
|
||||
if (editor != null && project != null && !project.isDisposed()) {
|
||||
final FindModel model = FindManager.getInstance(project).getFindInFileModel();
|
||||
final FindModel realModel = (FindModel)model.clone();
|
||||
String text = getEditorSearchComponent().getTextInField();
|
||||
String text = myEditorSearchComponent.getTextInField();
|
||||
if (StringUtil.isEmpty(text)) return;
|
||||
realModel.setStringToFind(text);
|
||||
FindUtil.findAllAndShow(project, editor, realModel);
|
||||
|
||||
+4
-10
@@ -18,12 +18,9 @@ package com.intellij.find.editorHeaderActions;
|
||||
import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -35,11 +32,8 @@ import java.util.ArrayList;
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public class NextOccurrenceAction extends EditorHeaderAction implements DumbAware {
|
||||
private final Getter<JTextComponent> myTextField;
|
||||
|
||||
public NextOccurrenceAction(EditorSearchComponent editorSearchComponent, Getter<JTextComponent> editorTextField) {
|
||||
public NextOccurrenceAction(EditorSearchComponent editorSearchComponent, JComponent shortcutHolder) {
|
||||
super(editorSearchComponent);
|
||||
myTextField = editorTextField;
|
||||
copyFrom(ActionManager.getInstance().getAction(IdeActions.ACTION_NEXT_OCCURENCE));
|
||||
ArrayList<Shortcut> shortcuts = new ArrayList<Shortcut>();
|
||||
ContainerUtil.addAll(shortcuts, ActionManager.getInstance().getAction(IdeActions.ACTION_FIND_NEXT).getShortcutSet().getShortcuts());
|
||||
@@ -50,16 +44,16 @@ public class NextOccurrenceAction extends EditorHeaderAction implements DumbAwar
|
||||
shortcuts.add(new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), null));
|
||||
}
|
||||
|
||||
registerShortcutsForComponent(shortcuts, editorTextField.get());
|
||||
registerShortcutsForComponent(shortcuts, shortcutHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
getEditorSearchComponent().searchForward();
|
||||
myEditorSearchComponent.searchForward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(final AnActionEvent e) {
|
||||
e.getPresentation().setEnabled(getEditorSearchComponent().hasMatches() && !StringUtil.isEmpty(myTextField.get().getText()));
|
||||
e.getPresentation().setEnabled(myEditorSearchComponent.hasMatches());
|
||||
}
|
||||
}
|
||||
|
||||
+4
-6
@@ -18,11 +18,9 @@ package com.intellij.find.editorHeaderActions;
|
||||
import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.ArrayList;
|
||||
@@ -36,7 +34,7 @@ import java.util.ArrayList;
|
||||
*/
|
||||
public class PrevOccurrenceAction extends EditorHeaderAction implements DumbAware {
|
||||
|
||||
public PrevOccurrenceAction(EditorSearchComponent editorSearchComponent, Getter<JTextComponent> editorTextField) {
|
||||
public PrevOccurrenceAction(EditorSearchComponent editorSearchComponent, JComponent shortcutHolder) {
|
||||
super(editorSearchComponent);
|
||||
|
||||
copyFrom(ActionManager.getInstance().getAction(IdeActions.ACTION_PREVIOUS_OCCURENCE));
|
||||
@@ -49,16 +47,16 @@ public class PrevOccurrenceAction extends EditorHeaderAction implements DumbAwar
|
||||
|
||||
shortcuts.add(new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK), null));
|
||||
}
|
||||
registerShortcutsForComponent(shortcuts, editorTextField.get());
|
||||
registerShortcutsForComponent(shortcuts, shortcutHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
getEditorSearchComponent().searchBackward();
|
||||
myEditorSearchComponent.searchBackward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(final AnActionEvent e) {
|
||||
e.getPresentation().setEnabled(getEditorSearchComponent().hasMatches());
|
||||
e.getPresentation().setEnabled(myEditorSearchComponent.hasMatches());
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -31,18 +31,18 @@ public class RemoveOccurrenceAction extends EditorHeaderAction implements DumbAw
|
||||
copyFrom(ActionManager.getInstance().getAction(IdeActions.ACTION_UNSELECT_PREVIOUS_OCCURENCE));
|
||||
getTemplatePresentation().setIcon(AllIcons.Actions.RemoveMulticaret);
|
||||
|
||||
registerShortcutsForComponent(Arrays.asList(getShortcutSet().getShortcuts()), editorSearchComponent.getSearchField());
|
||||
registerShortcutsForComponent(Arrays.asList(getShortcutSet().getShortcuts()), editorSearchComponent.getSearchTextComponent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
getEditorSearchComponent().removeOccurrence();
|
||||
myEditorSearchComponent.removeOccurrence();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
boolean isFind = !getEditorSearchComponent().getFindModel().isReplaceState();
|
||||
boolean hasMatches = getEditorSearchComponent().hasMatches();
|
||||
boolean isFind = !myEditorSearchComponent.getFindModel().isReplaceState();
|
||||
boolean hasMatches = myEditorSearchComponent.hasMatches();
|
||||
e.getPresentation().setVisible(isFind);
|
||||
e.getPresentation().setEnabled(isFind && hasMatches);
|
||||
}
|
||||
|
||||
+3
-3
@@ -11,16 +11,16 @@ import java.awt.event.KeyEvent;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ReplaceOnEnterAction extends EditorHeaderAction {
|
||||
public ReplaceOnEnterAction(EditorSearchComponent editorSearchComponent, JComponent textField) {
|
||||
public ReplaceOnEnterAction(EditorSearchComponent editorSearchComponent, JComponent shortcutHolder) {
|
||||
super(editorSearchComponent);
|
||||
ArrayList<Shortcut> shortcuts = new ArrayList<Shortcut>();
|
||||
shortcuts.add(new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), null));
|
||||
|
||||
registerCustomShortcutSet(new CustomShortcutSet(shortcuts.toArray(new Shortcut[shortcuts.size()])), textField);
|
||||
registerCustomShortcutSet(new CustomShortcutSet(shortcuts.toArray(new Shortcut[shortcuts.size()])), shortcutHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
getEditorSearchComponent().replaceCurrent();
|
||||
myEditorSearchComponent.replaceCurrent();
|
||||
}
|
||||
}
|
||||
|
||||
+10
-2
@@ -16,6 +16,8 @@
|
||||
package com.intellij.find.editorHeaderActions;
|
||||
|
||||
import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindManager;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
@@ -44,12 +46,18 @@ public class RestorePreviousSettingsAction extends EditorHeaderAction implements
|
||||
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
getEditorSearchComponent().restoreFindModel();
|
||||
final FindModel model = FindManager.getInstance(e.getProject()).getPreviousFindModel();
|
||||
if (model != null) {
|
||||
myEditorSearchComponent.getFindModel().copyFrom(model);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(final AnActionEvent e) {
|
||||
e.getPresentation().setEnabled(myTextField.getText().isEmpty());
|
||||
e.getPresentation().setEnabled(
|
||||
e.getProject() != null
|
||||
&& myTextField.getText().isEmpty()
|
||||
&& FindManager.getInstance(e.getProject()).getPreviousFindModel() != null);
|
||||
}
|
||||
|
||||
public static String getAd() {
|
||||
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
package com.intellij.find.editorHeaderActions;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: zajac
|
||||
* Date: 02.04.11
|
||||
* Time: 14:43
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public interface SecondaryHeaderAction {
|
||||
}
|
||||
@@ -34,19 +34,19 @@ public class SelectAllAction extends EditorHeaderAction implements DumbAware {
|
||||
List<Shortcut> shortcuts = new ArrayList<Shortcut>();
|
||||
ContainerUtil.addAll(shortcuts, getShortcutSet().getShortcuts());
|
||||
ContainerUtil.addAll(shortcuts, CommonShortcuts.ALT_ENTER.getShortcuts());
|
||||
registerShortcutsForComponent(shortcuts, editorSearchComponent.getSearchField());
|
||||
registerShortcutsForComponent(shortcuts, editorSearchComponent.getSearchTextComponent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
getEditorSearchComponent().selectAllOccurrences();
|
||||
getEditorSearchComponent().close();
|
||||
myEditorSearchComponent.selectAllOccurrences();
|
||||
myEditorSearchComponent.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
boolean isFind = !getEditorSearchComponent().getFindModel().isReplaceState();
|
||||
boolean hasMatches = getEditorSearchComponent().hasMatches();
|
||||
boolean isFind = !myEditorSearchComponent.getFindModel().isReplaceState();
|
||||
boolean hasMatches = myEditorSearchComponent.hasMatches();
|
||||
e.getPresentation().setVisible(isFind);
|
||||
e.getPresentation().setEnabled(isFind && hasMatches);
|
||||
}
|
||||
|
||||
+9
-20
@@ -4,7 +4,6 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.ide.ui.laf.darcula.ui.DarculaTextFieldUI;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
|
||||
@@ -15,46 +14,36 @@ import java.awt.event.KeyEvent;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: zajac
|
||||
* Date: 05.03.11
|
||||
* Time: 10:44
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
* User: zajac
|
||||
*/
|
||||
public class ShowHistoryAction extends EditorHeaderAction implements DumbAware {
|
||||
private final Getter<JTextComponent> myTextField;
|
||||
private final JTextComponent myTextField;
|
||||
|
||||
public JTextComponent getTextField() {
|
||||
return myTextField.get();
|
||||
}
|
||||
|
||||
public ShowHistoryAction(final Getter<JTextComponent> textField, EditorSearchComponent editorSearchComponent) {
|
||||
public ShowHistoryAction(final JTextComponent textField, EditorSearchComponent editorSearchComponent) {
|
||||
super(editorSearchComponent);
|
||||
myTextField = textField;
|
||||
getTemplatePresentation().setIcon(IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/search.png", DarculaTextFieldUI.class, true));
|
||||
final String s = getTextField() == getEditorSearchComponent().getSearchField() ? "Search" : "Replace";
|
||||
final String s = myTextField == myEditorSearchComponent.getSearchTextComponent() ? "Search" : "Replace";
|
||||
getTemplatePresentation().setDescription(s + " history");
|
||||
getTemplatePresentation().setText(s + " History");
|
||||
|
||||
ArrayList<Shortcut> shortcuts = new ArrayList<Shortcut>();
|
||||
if (getTextField() == getEditorSearchComponent().getSearchField()) {
|
||||
if (myTextField == myEditorSearchComponent.getSearchTextComponent()) {
|
||||
//ContainerUtil.addAll(shortcuts, ActionManager.getInstance().getAction(IdeActions.ACTION_FIND).getShortcutSet().getShortcuts());
|
||||
ContainerUtil.addAll(shortcuts, ActionManager.getInstance().getAction("IncrementalSearch").getShortcutSet().getShortcuts());
|
||||
}
|
||||
shortcuts.add(new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_DOWN_MASK), null));
|
||||
|
||||
registerCustomShortcutSet(new CustomShortcutSet(shortcuts.toArray(new Shortcut[shortcuts.size()])), getTextField());
|
||||
registerCustomShortcutSet(new CustomShortcutSet(shortcuts.toArray(new Shortcut[shortcuts.size()])), myTextField);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
e.getPresentation().setVisible(getEditorSearchComponent().getFindModel().isMultiline());
|
||||
e.getPresentation().setVisible(myEditorSearchComponent.getFindModel().isMultiline());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
getEditorSearchComponent().showHistory(false, getTextField());
|
||||
myEditorSearchComponent.showHistory(false, myTextField);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.intellij.openapi.actionSystem.impl.ActionToolbarImpl;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.JTextComponent;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
@@ -18,17 +17,17 @@ import java.awt.event.KeyEvent;
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public class ShowMoreOptions extends AnAction implements DumbAware {
|
||||
private final JComponent myToolbarComponent;
|
||||
private final ActionToolbarImpl myToolbarComponent;
|
||||
public static final Shortcut SHORT_CUT = new KeyboardShortcut(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, InputEvent.ALT_DOWN_MASK), null);
|
||||
|
||||
public ShowMoreOptions(JComponent toolbarComponent, JTextComponent searchField) {
|
||||
public ShowMoreOptions(ActionToolbarImpl toolbarComponent, JComponent shortcutHolder) {
|
||||
this.myToolbarComponent = toolbarComponent;
|
||||
registerCustomShortcutSet(new CustomShortcutSet(SHORT_CUT), searchField);
|
||||
registerCustomShortcutSet(new CustomShortcutSet(SHORT_CUT), shortcutHolder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final ActionButton secondaryActions = ((ActionToolbarImpl)myToolbarComponent).getSecondaryActionsButton();
|
||||
final ActionButton secondaryActions = myToolbarComponent.getSecondaryActionsButton();
|
||||
if (secondaryActions != null) {
|
||||
secondaryActions.click();
|
||||
}
|
||||
|
||||
@@ -37,9 +37,8 @@ public class SwitchToFind extends EditorHeaderAction implements DumbAware {
|
||||
return;
|
||||
}
|
||||
|
||||
EditorSearchComponent component = getEditorSearchComponent();
|
||||
final FindModel findModel = component.getFindModel();
|
||||
final FindModel findModel = myEditorSearchComponent.getFindModel();
|
||||
FindUtil.configureFindModel(false, null, findModel, false);
|
||||
component.selectAllText();
|
||||
myEditorSearchComponent.getSearchTextComponent().selectAll();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ import com.intellij.openapi.editor.Editor;
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public class SwitchToReplace extends EditorHeaderAction {
|
||||
public SwitchToReplace(EditorSearchComponent editorSearchComponent) {
|
||||
private final Editor myEditor;
|
||||
|
||||
public SwitchToReplace(EditorSearchComponent editorSearchComponent, Editor editor) {
|
||||
super(editorSearchComponent);
|
||||
myEditor = editor;
|
||||
AnAction replaceAction = ActionManager.getInstance().getAction("Replace");
|
||||
if (replaceAction != null) {
|
||||
registerCustomShortcutSet(replaceAction.getShortcutSet(), editorSearchComponent);
|
||||
@@ -27,15 +30,13 @@ public class SwitchToReplace extends EditorHeaderAction {
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
final Editor editor = getEditorSearchComponent().getEditor();
|
||||
e.getPresentation().setEnabled(!ConsoleViewUtil.isConsoleViewEditor(editor));
|
||||
e.getPresentation().setEnabled(!ConsoleViewUtil.isConsoleViewEditor(myEditor));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
EditorSearchComponent component = getEditorSearchComponent();
|
||||
final FindModel findModel = component.getFindModel();
|
||||
final FindModel findModel = myEditorSearchComponent.getFindModel();
|
||||
FindUtil.configureFindModel(true, null, findModel, false);
|
||||
component.selectAllText();
|
||||
myEditorSearchComponent.getSearchTextComponent().selectAll();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
public class ToggleExceptCommentsAction extends EditorHeaderToggleAction implements SecondaryHeaderAction {
|
||||
public class ToggleExceptCommentsAction extends EditorHeaderToggleAction {
|
||||
private static final String TEXT = "Except C&omments";
|
||||
|
||||
public ToggleExceptCommentsAction(EditorSearchComponent editorSearchComponent) {
|
||||
@@ -28,11 +28,11 @@ public class ToggleExceptCommentsAction extends EditorHeaderToggleAction impleme
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isExceptComments();
|
||||
return myEditorSearchComponent.getFindModel().isExceptComments();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setSearchContext(state ? FindModel.SearchContext.EXCEPT_COMMENTS : FindModel.SearchContext.ANY);
|
||||
myEditorSearchComponent.getFindModel().setSearchContext(state ? FindModel.SearchContext.EXCEPT_COMMENTS : FindModel.SearchContext.ANY);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
public class ToggleExceptCommentsAndLiteralsAction extends EditorHeaderToggleAction implements SecondaryHeaderAction {
|
||||
public class ToggleExceptCommentsAndLiteralsAction extends EditorHeaderToggleAction {
|
||||
private static final String TEXT = "Except Comments and Li&terals";
|
||||
|
||||
public ToggleExceptCommentsAndLiteralsAction(EditorSearchComponent editorSearchComponent) {
|
||||
@@ -28,11 +28,11 @@ public class ToggleExceptCommentsAndLiteralsAction extends EditorHeaderToggleAct
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isExceptCommentsAndStringLiterals();
|
||||
return myEditorSearchComponent.getFindModel().isExceptCommentsAndStringLiterals();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setSearchContext(state ? FindModel.SearchContext.EXCEPT_COMMENTS_AND_STRING_LITERALS : FindModel.SearchContext.ANY);
|
||||
myEditorSearchComponent.getFindModel().setSearchContext(state ? FindModel.SearchContext.EXCEPT_COMMENTS_AND_STRING_LITERALS : FindModel.SearchContext.ANY);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
public class ToggleExceptLiteralsAction extends EditorHeaderToggleAction implements SecondaryHeaderAction {
|
||||
public class ToggleExceptLiteralsAction extends EditorHeaderToggleAction {
|
||||
private static final String TEXT = "Except L&iterals";
|
||||
|
||||
public ToggleExceptLiteralsAction(EditorSearchComponent editorSearchComponent) {
|
||||
@@ -28,11 +28,11 @@ public class ToggleExceptLiteralsAction extends EditorHeaderToggleAction impleme
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isExceptStringLiterals();
|
||||
return myEditorSearchComponent.getFindModel().isExceptStringLiterals();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setSearchContext(state ? FindModel.SearchContext.EXCEPT_STRING_LITERALS : FindModel.SearchContext.ANY);
|
||||
myEditorSearchComponent.getFindModel().setSearchContext(state ? FindModel.SearchContext.EXCEPT_STRING_LITERALS : FindModel.SearchContext.ANY);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
public class ToggleInCommentsAction extends EditorHeaderToggleAction implements SecondaryHeaderAction {
|
||||
public class ToggleInCommentsAction extends EditorHeaderToggleAction {
|
||||
private static final String TEXT = "In &Comments Only";
|
||||
|
||||
public ToggleInCommentsAction(EditorSearchComponent editorSearchComponent) {
|
||||
@@ -13,11 +13,11 @@ public class ToggleInCommentsAction extends EditorHeaderToggleAction implements
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isInCommentsOnly();
|
||||
return myEditorSearchComponent.getFindModel().isInCommentsOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setSearchContext(state ? FindModel.SearchContext.IN_COMMENTS : FindModel.SearchContext.ANY);
|
||||
myEditorSearchComponent.getFindModel().setSearchContext(state ? FindModel.SearchContext.IN_COMMENTS : FindModel.SearchContext.ANY);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
public class ToggleInLiteralsOnlyAction extends EditorHeaderToggleAction implements SecondaryHeaderAction {
|
||||
public class ToggleInLiteralsOnlyAction extends EditorHeaderToggleAction {
|
||||
private static final String TEXT = "In &Literals Only";
|
||||
|
||||
public ToggleInLiteralsOnlyAction(EditorSearchComponent editorSearchComponent) {
|
||||
@@ -13,11 +13,11 @@ public class ToggleInLiteralsOnlyAction extends EditorHeaderToggleAction implem
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isInStringLiteralsOnly();
|
||||
return myEditorSearchComponent.getFindModel().isInStringLiteralsOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setSearchContext(state ? FindModel.SearchContext.IN_STRING_LITERALS : FindModel.SearchContext.ANY);
|
||||
myEditorSearchComponent.getFindModel().setSearchContext(state ? FindModel.SearchContext.IN_STRING_LITERALS : FindModel.SearchContext.ANY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,12 +28,12 @@ public class ToggleMatchCase extends EditorHeaderToggleAction {
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isCaseSensitive();
|
||||
return myEditorSearchComponent.getFindModel().isCaseSensitive();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setCaseSensitive(state);
|
||||
myEditorSearchComponent.getFindModel().setCaseSensitive(state);
|
||||
FindSettings.getInstance().setLocalCaseSensitive(state);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-5
@@ -19,7 +19,7 @@ import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.find.FindModel;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
|
||||
public class TogglePreserveCaseAction extends EditorHeaderToggleAction implements SecondaryHeaderAction {
|
||||
public class TogglePreserveCaseAction extends EditorHeaderToggleAction {
|
||||
private static final String TEXT = "Pr&eserve Case";
|
||||
|
||||
public TogglePreserveCaseAction(EditorSearchComponent editorSearchComponent) {
|
||||
@@ -28,19 +28,18 @@ public class TogglePreserveCaseAction extends EditorHeaderToggleAction implemen
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isPreserveCase();
|
||||
return myEditorSearchComponent.getFindModel().isPreserveCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
super.update(e);
|
||||
FindModel findModel = getEditorSearchComponent().getFindModel();
|
||||
e.getPresentation().setVisible(findModel.isReplaceState() && !findModel.isMultiline());
|
||||
FindModel findModel = myEditorSearchComponent.getFindModel();
|
||||
e.getPresentation().setEnabled(!findModel.isRegularExpressions());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setPreserveCase(state);
|
||||
myEditorSearchComponent.getFindModel().setPreserveCase(state);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,12 +26,12 @@ public class ToggleRegex extends EditorHeaderToggleAction {
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isRegularExpressions();
|
||||
return myEditorSearchComponent.getFindModel().isRegularExpressions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
final FindModel findModel = getEditorSearchComponent().getFindModel();
|
||||
final FindModel findModel = myEditorSearchComponent.getFindModel();
|
||||
findModel.setRegularExpressions(state);
|
||||
if (state) {
|
||||
findModel.setWholeWordsOnly(false);
|
||||
|
||||
+3
-3
@@ -12,19 +12,19 @@ public class ToggleSelectionOnlyAction extends EditorHeaderToggleAction {
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return !getEditorSearchComponent().getFindModel().isGlobal();
|
||||
return !myEditorSearchComponent.getFindModel().isGlobal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
super.update(e);
|
||||
final boolean replaceState = getEditorSearchComponent().getFindModel().isReplaceState();
|
||||
final boolean replaceState = myEditorSearchComponent.getFindModel().isReplaceState();
|
||||
e.getPresentation().setVisible(replaceState);
|
||||
e.getPresentation().setEnabled(replaceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
getEditorSearchComponent().getFindModel().setGlobal(!state);
|
||||
myEditorSearchComponent.getFindModel().setGlobal(!state);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -13,19 +13,19 @@ public class ToggleWholeWordsOnlyAction extends EditorHeaderToggleAction {
|
||||
|
||||
@Override
|
||||
public boolean isSelected(AnActionEvent e) {
|
||||
return getEditorSearchComponent().getFindModel().isWholeWordsOnly();
|
||||
return myEditorSearchComponent.getFindModel().isWholeWordsOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
super.update(e);
|
||||
e.getPresentation().setEnabled(!getEditorSearchComponent().getFindModel().isRegularExpressions());
|
||||
e.getPresentation().setVisible(!getEditorSearchComponent().getFindModel().isMultiline());
|
||||
e.getPresentation().setEnabled(!myEditorSearchComponent.getFindModel().isRegularExpressions());
|
||||
e.getPresentation().setVisible(!myEditorSearchComponent.getFindModel().isMultiline());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
FindSettings.getInstance().setLocalWholeWordsOnly(state);
|
||||
getEditorSearchComponent().getFindModel().setWholeWordsOnly(state);
|
||||
myEditorSearchComponent.getFindModel().setWholeWordsOnly(state);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.intellij.openapi.ui.popup.JBPopup;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.ui.popup.PopupChooserBuilder;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.JTextComponent;
|
||||
@@ -50,16 +51,10 @@ public class Utils {
|
||||
|
||||
public static void setSmallerFont(final JComponent component) {
|
||||
if (SystemInfo.isMac) {
|
||||
Font f = new JLabel(" ").getFont();
|
||||
Font font = smaller(f);
|
||||
component.setFont(font);
|
||||
component.setFont(JBUI.Fonts.smallFont());
|
||||
}
|
||||
}
|
||||
|
||||
static Font smaller(Font f) {
|
||||
return f.deriveFont(f.getStyle(), f.getSize() - 2);
|
||||
}
|
||||
|
||||
public static void setSmallerFontForChildren(JComponent component) {
|
||||
for (Component c : component.getComponents()) {
|
||||
if (c instanceof JComponent) {
|
||||
|
||||
+10
-41
@@ -16,14 +16,9 @@
|
||||
package com.intellij.find.editorHeaderActions;
|
||||
|
||||
import com.intellij.featureStatistics.FeatureUsageTracker;
|
||||
import com.intellij.find.EditorSearchComponent;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.IdeActions;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.colors.EditorFontType;
|
||||
import com.intellij.openapi.util.Getter;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.impl.cache.impl.id.IdTableBuilding;
|
||||
@@ -44,29 +39,23 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class VariantsCompletionAction extends AnAction {
|
||||
private Getter<JTextComponent> myTextField;
|
||||
private final EditorSearchComponent myEditorSearchComponent;
|
||||
private final JTextComponent myTextField;
|
||||
|
||||
public EditorSearchComponent getEditorSearchComponent() {
|
||||
return myEditorSearchComponent;
|
||||
}
|
||||
|
||||
public VariantsCompletionAction(EditorSearchComponent editorSearchComponent, Getter<JTextComponent> textField) {
|
||||
myEditorSearchComponent = editorSearchComponent;
|
||||
public VariantsCompletionAction(JTextComponent textField) {
|
||||
myTextField = textField;
|
||||
final AnAction action = ActionManager.getInstance().getAction(IdeActions.ACTION_CODE_COMPLETION);
|
||||
setTextField(textField);
|
||||
if (action != null) {
|
||||
registerCustomShortcutSet(action.getShortcutSet(), getTextField());
|
||||
registerCustomShortcutSet(action.getShortcutSet(), myTextField);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(final AnActionEvent e) {
|
||||
final String prefix = getPrefix();
|
||||
final Editor editor = e.getData(CommonDataKeys.EDITOR_EVEN_IF_INACTIVE);
|
||||
if (editor == null) return;
|
||||
final String prefix = myTextField.getText().substring(0, myTextField.getCaretPosition());
|
||||
if (StringUtil.isEmpty(prefix)) return;
|
||||
|
||||
Editor editor = getEditorSearchComponent().getEditor();
|
||||
if (editor != null) {
|
||||
final String[] array = calcWords(prefix, editor);
|
||||
if (array.length == 0) {
|
||||
return;
|
||||
@@ -84,28 +73,8 @@ public class VariantsCompletionAction extends AnAction {
|
||||
list.setFont(editor.getColorsScheme().getFont(EditorFontType.PLAIN));
|
||||
|
||||
Utils.showCompletionPopup(
|
||||
e.getInputEvent() instanceof MouseEvent ? getEditorSearchComponent().getToolbarComponent() : null,
|
||||
list, null, getTextField(), null);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private String getPrefix() {
|
||||
//Editor editor = myTextField.getEditor();
|
||||
//if (editor != null){
|
||||
// int offset = editor.getCaretModel().getOffset();
|
||||
// return myTextField.getText().substring(0, offset);
|
||||
//}
|
||||
int offset = getTextField().getCaretPosition();
|
||||
return getTextField().getText().substring(0, offset);
|
||||
}
|
||||
|
||||
public JTextComponent getTextField() {
|
||||
return myTextField.get();
|
||||
}
|
||||
|
||||
public void setTextField(Getter<JTextComponent> textField) {
|
||||
myTextField = textField;
|
||||
e.getInputEvent() instanceof MouseEvent ? myTextField: null,
|
||||
list, null, myTextField, null);
|
||||
}
|
||||
|
||||
private static String[] calcWords(final String prefix, Editor editor) {
|
||||
|
||||
+1
-1
@@ -243,7 +243,7 @@ public class LivePreviewController implements LivePreview.Delegate, FindUtil.Rep
|
||||
mySuppressUpdate = false;
|
||||
}
|
||||
if (myComponent != null) {
|
||||
myComponent.addTextToRecent(myComponent.getReplaceField());
|
||||
myComponent.addTextToRecent(myComponent.getReplaceTextComponent());
|
||||
myComponent.clearUndoInTextFields();
|
||||
}
|
||||
}
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.openapi.actionSystem.ex;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class DefaultCustomComponentAction extends AnAction implements CustomComponentAction {
|
||||
@NotNull private final JComponent myComponent;
|
||||
|
||||
public DefaultCustomComponentAction(@NotNull final JComponent component) {
|
||||
myComponent = component;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent createCustomComponent(Presentation presentation) {
|
||||
return myComponent;
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,9 @@ import java.awt.event.FocusListener;
|
||||
|
||||
public class Wrapper extends JPanel implements NullableComponent {
|
||||
|
||||
private JComponent myVerticalSizeReferent;
|
||||
private JComponent myHorizontalSizeReferent;
|
||||
|
||||
public Wrapper() {
|
||||
setLayout(new BorderLayout());
|
||||
setOpaque(false);
|
||||
@@ -112,6 +115,27 @@ public class Wrapper extends JPanel implements NullableComponent {
|
||||
}
|
||||
}
|
||||
|
||||
public final Wrapper setVerticalSizeReferent(JComponent verticalSizeReferent) {
|
||||
myVerticalSizeReferent = verticalSizeReferent;
|
||||
return this;
|
||||
}
|
||||
|
||||
public final Wrapper setHorizontalSizeReferent(JComponent horizontalSizeReferent) {
|
||||
myHorizontalSizeReferent = horizontalSizeReferent;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
Dimension size = super.getPreferredSize();
|
||||
if (myHorizontalSizeReferent != null && myHorizontalSizeReferent.isShowing()) {
|
||||
size.width = Math.max(size.width, myHorizontalSizeReferent.getPreferredSize().width);
|
||||
}
|
||||
if (myVerticalSizeReferent != null && myVerticalSizeReferent.isShowing()) {
|
||||
size.height = Math.max(size.height, myVerticalSizeReferent.getPreferredSize().height);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
public static class FocusHolder extends Wrapper implements FocusListener {
|
||||
|
||||
@@ -177,6 +201,7 @@ public class Wrapper extends JPanel implements NullableComponent {
|
||||
@Override
|
||||
public void focusLost(final FocusEvent e) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class North extends Wrapper {
|
||||
|
||||
+27
-1
@@ -115,6 +115,8 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
|
||||
private Rectangle myAutoPopupRec;
|
||||
|
||||
private final DefaultActionGroup mySecondaryActions = new DefaultActionGroup();
|
||||
private PopupStateModifier mySecondaryButtonPopupStateModifier = null;
|
||||
private boolean myForceMinimumSize = false;
|
||||
private boolean myMinimalMode;
|
||||
private boolean myForceUseMacEnhancements;
|
||||
|
||||
@@ -264,6 +266,10 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
|
||||
}
|
||||
}
|
||||
|
||||
public void setSecondaryButtonPopupStateModifier(PopupStateModifier popupStateModifier) {
|
||||
mySecondaryButtonPopupStateModifier = popupStateModifier;
|
||||
}
|
||||
|
||||
private void fillToolBar(final List<AnAction> actions, boolean layoutSecondaries) {
|
||||
final List<AnAction> rightAligned = new ArrayList<AnAction>();
|
||||
if (myAddSeparatorFirst) {
|
||||
@@ -304,7 +310,15 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
|
||||
}
|
||||
|
||||
if (mySecondaryActions.getChildrenCount() > 0) {
|
||||
mySecondaryActionsButton = new ActionButton(mySecondaryActions, myPresentationFactory.getPresentation(mySecondaryActions), myPlace, getMinimumButtonSize());
|
||||
mySecondaryActionsButton = new ActionButton(mySecondaryActions, myPresentationFactory.getPresentation(mySecondaryActions), myPlace, getMinimumButtonSize()) {
|
||||
@Override
|
||||
@ButtonState
|
||||
public int getPopState() {
|
||||
return mySecondaryButtonPopupStateModifier != null && mySecondaryButtonPopupStateModifier.willModify()
|
||||
? mySecondaryButtonPopupStateModifier.getModifiedPopupState()
|
||||
: super.getPopState();
|
||||
}
|
||||
};
|
||||
mySecondaryActionsButton.setNoIconsInPopup(true);
|
||||
add(mySecondaryActionsButton);
|
||||
}
|
||||
@@ -788,9 +802,15 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
|
||||
|
||||
return dimension;
|
||||
}
|
||||
public void setForceMinimumSize(boolean force) {
|
||||
myForceMinimumSize = force;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension getMinimumSize() {
|
||||
if (myForceMinimumSize) {
|
||||
return getPreferredSize();
|
||||
}
|
||||
if (myLayoutPolicy == AUTO_LAYOUT_POLICY) {
|
||||
final Insets i = getInsets();
|
||||
return new Dimension(AllIcons.Ide.Link.getIconWidth() + i.left + i.right, myMinimumButtonSize.height + i.top + i.bottom);
|
||||
@@ -1323,4 +1343,10 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar {
|
||||
public Presentation getPresentation(AnAction action) {
|
||||
return myPresentationFactory.getPresentation(action);
|
||||
}
|
||||
|
||||
public interface PopupStateModifier {
|
||||
@ActionButtonComponent.ButtonState
|
||||
int getModifiedPopupState();
|
||||
boolean willModify();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user