hzzz 7 years ago
parent
commit
16925fe0ae
  1. 14
      designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java
  2. 6
      designer_base/src/com/fr/design/gui/autocomplete/AutoCompletion.java
  3. 71
      designer_base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java
  4. 15
      designer_base/src/com/fr/design/gui/itabpane/UITabsHeaderIconPane.java

14
designer_base/src/com/fr/design/gui/autocomplete/AutoCompletePopupWindow.java

@ -10,6 +10,7 @@
package com.fr.design.gui.autocomplete;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.PopupWindowDecorator;
import com.fr.general.FRLogger;
import javax.swing.*;
import javax.swing.event.CaretEvent;
@ -301,7 +302,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
private void installKeyBindings() {
if (AutoCompletion.isDebug()) {
System.out.println("PopupWindow: Installing keybindings");
FRLogger.getLogger().debug("PopupWindow: Installing keybindings");
}
if (escapeKap == null) { // Lazily create actions.
@ -386,15 +387,16 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
// Try to position to the right first (LTR)
int x;
int dis = 5;
if (ac.getTextComponentOrientation().isLeftToRight()) {
x = getX() + getWidth() + 5;
x = getX() + getWidth() + dis;
if (x + descWindow.getWidth() > screenBounds.x + screenBounds.width) { // doesn't fit
x = getX() - 5 - descWindow.getWidth();
x = getX() - dis - descWindow.getWidth();
}
} else { // RTL
x = getX() - 5 - descWindow.getWidth();
x = getX() - dis - descWindow.getWidth();
if (x < screenBounds.x) { // Doesn't fit
x = getX() + getWidth() + 5;
x = getX() + getWidth() + dis;
}
}
@ -709,7 +711,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
private void uninstallKeyBindings() {
if (AutoCompletion.isDebug()) {
System.out.println("PopupWindow: Removing keybindings");
FRLogger.getLogger().debug("PopupWindow: Removing keybindings");
}
JTextComponent comp = ac.getTextComponent();

6
designer_base/src/com/fr/design/gui/autocomplete/AutoCompletion.java

@ -277,7 +277,7 @@ public class AutoCompletion {
* @return Whether to auto-complete single choices.
* @see #setAutoCompleteSingleChoices(boolean)
*/
public boolean getAutoCompleteSingleChoices() {
public boolean isAutoCompleteSingleChoices() {
return autoCompleteSingleChoices;
}
@ -730,7 +730,7 @@ public class AutoCompletion {
private boolean needSetPopupWindow(int count, int textLen) {
return (count == 1 && (isPopupVisible() || textLen == 0))
|| (count == 1 && !getAutoCompleteSingleChoices())
|| (count == 1 && !isAutoCompleteSingleChoices())
|| count > 1;
}
@ -809,7 +809,7 @@ public class AutoCompletion {
* be automatically inserted, without displaying the popup menu.
*
* @param autoComplete Whether to auto-complete single choices.
* @see #getAutoCompleteSingleChoices()
* @see #isAutoCompleteSingleChoices()
*/
public void setAutoCompleteSingleChoices(boolean autoComplete) {
autoCompleteSingleChoices = autoComplete;

71
designer_base/src/com/fr/design/gui/autocomplete/ParameterizedCompletionContext.java

@ -14,6 +14,7 @@ import com.fr.design.gui.autocomplete.ParameterizedCompletionInsertionInfo.Repla
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.DocumentRange;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea;
import com.fr.design.gui.syntax.ui.rtextarea.ChangeableHighlightPainter;
import com.fr.general.FRLogger;
import javax.swing.*;
import javax.swing.event.CaretEvent;
@ -254,7 +255,7 @@ class ParameterizedCompletionContext {
*
* @param offs The offset into the document.
* @return The text of the parameter containing the offset, or
* <code>null</code> if the offset is not in a parameter.
* <code>null</code> if the offset is not in a parameter.
*/
public String getArgumentText(int offs) {
List<Highlight> paramHighlights = getParameterHighlights();
@ -284,7 +285,7 @@ class ParameterizedCompletionContext {
* Returns the highlight of the current parameter.
*
* @return The current parameter's highlight, or <code>null</code> if
* the caret is not in a parameter's bounds.
* the caret is not in a parameter's bounds.
* @see #getCurrentParameterStartOffset()
*/
private Highlight getCurrentParameterHighlight() {
@ -332,7 +333,7 @@ class ParameterizedCompletionContext {
* Returns the starting offset of the current parameter.
*
* @return The current parameter's starting offset, or <code>-1</code> if
* the caret is not in a parameter's bounds.
* the caret is not in a parameter's bounds.
* @see #getCurrentParameterHighlight()
*/
private int getCurrentParameterStartOffset() {
@ -407,7 +408,7 @@ class ParameterizedCompletionContext {
* Inserts the choice selected in the parameter choices window.
*
* @return Whether the choice was inserted. This will be <code>false</code>
* if the window is not visible, or no choice is selected.
* if the window is not visible, or no choice is selected.
*/
boolean insertSelectedChoice() {
if (paramChoicesWindow != null && paramChoicesWindow.isVisible()) {
@ -438,11 +439,9 @@ class ParameterizedCompletionContext {
* @see #uninstallKeyBindings()
*/
private void installKeyBindings() {
if (AutoCompletion.isDebug()) {
System.out.println("CompletionContext: Installing keybindings");
FRLogger.getLogger().debug("CompletionContext: Installing keybindings");
}
JTextComponent tc = ac.getTextComponent();
InputMap im = tc.getInputMap();
ActionMap am = tc.getActionMap();
@ -489,7 +488,6 @@ class ParameterizedCompletionContext {
im.put(ks, IM_KEY_CLOSING);
oldClosingAction = am.get(IM_KEY_CLOSING);
am.put(IM_KEY_CLOSING, new ClosingAction());
}
@ -513,12 +511,7 @@ class ParameterizedCompletionContext {
List<Highlight> highlights = getParameterHighlights();
for (int i = 0; i < highlights.size(); i++) {
Highlight hl = highlights.get(i);
// Check "< dot", not "<= dot" as OutlineHighlightPainter paints
// starting at one char AFTER the highlight starts, to work around
// Java issue. Thanks to Matthew Adereth!
if (currentNext == null || currentNext.getStartOffset() </*=*/dot ||
(hl.getStartOffset() > dot &&
hl.getStartOffset() <= currentNext.getStartOffset())) {
if (needUpdate(currentNext, hl, dot)) {
currentNext = hl;
pos = i;
}
@ -538,6 +531,15 @@ class ParameterizedCompletionContext {
}
private boolean needUpdate(Highlight currentNext, Highlight hl, int dot) {
// Check "< dot", not "<= dot" as OutlineHighlightPainter paints
// starting at one char AFTER the highlight starts, to work around
// Java issue. Thanks to Matthew Adereth!
return currentNext == null || currentNext.getStartOffset() </*=*/dot ||
(hl.getStartOffset() > dot &&
hl.getStartOffset() <= currentNext.getStartOffset());
}
/**
* Moves to and selects the previous parameter.
@ -562,10 +564,7 @@ class ParameterizedCompletionContext {
for (int i = 0; i < highlights.size(); i++) {
Highlight h = highlights.get(i);
if (currentPrev == null || currentPrev.getStartOffset() >= dot ||
(h.getStartOffset() < selStart &&
(h.getStartOffset() > currentPrev.getStartOffset() ||
pos == lastSelectedParam))) {
if (pos == lastSelectedParam || needUpdate(currentPrev, dot, h, selStart)) {
currentPrev = h;
pos = i;
}
@ -593,6 +592,12 @@ class ParameterizedCompletionContext {
}
private boolean needUpdate(Highlight currentPrev, int dot, Highlight h, int selStart) {
return currentPrev == null
|| currentPrev.getStartOffset() >= dot
|| (currentPrev.getStartOffset() < h.getStartOffset() && h.getStartOffset() < selStart);
}
private void possiblyUpdateParamCopies(Document doc) {
@ -616,7 +621,7 @@ class ParameterizedCompletionContext {
try {
replacement = doc.getText(start, len);
} catch (BadLocationException ble) {
// Never happens
// Never happens
}
// Replace any param copies tracking this parameter with the
@ -718,7 +723,7 @@ class ParameterizedCompletionContext {
return h;
} catch (BadLocationException ble) {
// Never happens
// Never happens
}
return null;
@ -734,7 +739,7 @@ class ParameterizedCompletionContext {
private void uninstallKeyBindings() {
if (AutoCompletion.isDebug()) {
System.out.println("CompletionContext Uninstalling keybindings");
FRLogger.getLogger().debug("CompletionContext Uninstalling keybindings");
}
JTextComponent tc = ac.getTextComponent();
@ -1037,7 +1042,6 @@ class ParameterizedCompletionContext {
* @see #uninstall()
*/
public void install(JTextComponent tc) {
boolean replaceTabs = false;
if (tc instanceof RSyntaxTextArea) {
RSyntaxTextArea textArea = (RSyntaxTextArea) tc;
@ -1047,14 +1051,10 @@ class ParameterizedCompletionContext {
}
Highlighter h = tc.getHighlighter();
try {
// Insert the parameter text
ParameterizedCompletionInsertionInfo info =
pc.getInsertionInfo(tc, replaceTabs);
ParameterizedCompletionInsertionInfo info = pc.getInsertionInfo(tc, replaceTabs);
tc.replaceSelection(info.getTextToInsert());
// Add highlights around the parameters.
final int replacementCount = info.getReplacementCount();
for (int i = 0; i < replacementCount; i++) {
@ -1067,40 +1067,31 @@ class ParameterizedCompletionContext {
for (int i = 0; i < info.getReplacementCopyCount(); i++) {
ReplacementCopy rc = info.getReplacementCopy(i);
paramCopyInfos.add(new ParamCopyInfo(rc.getId(),
(Highlight) h.addHighlight(rc.getStart(), rc.getEnd(),
paramCopyP)));
(Highlight) h.addHighlight(rc.getStart(), rc.getEnd(), paramCopyP)));
}
// Go back and start at the first parameter.
tc.setCaretPosition(info.getSelectionStart());
if (info.hasSelection()) {
tc.moveCaretPosition(info.getSelectionEnd());
}
minPos = info.getMinOffset();
maxPos = info.getMaxOffset();
try {
defaultEndOffs = tc.getDocument().createPosition(
info.getDefaultEndOffs());
defaultEndOffs = tc.getDocument().createPosition(info.getDefaultEndOffs());
} catch (BadLocationException ble) {
// Never happens
// Never happens
}
// Listen for document events AFTER we insert
tc.getDocument().addDocumentListener(this);
} catch (BadLocationException ble) {
// Never happens
// Never happens
}
// Add listeners to the text component, AFTER text insertion.
tc.addCaretListener(this);
tc.addFocusListener(this);
installKeyBindings();
}
public void removeUpdate(DocumentEvent e) {
handleDocumentEvent(e);
}

15
designer_base/src/com/fr/design/gui/itabpane/UITabsHeaderIconPane.java

@ -10,6 +10,7 @@ import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.AbstractAction;
@ -145,9 +146,7 @@ public class UITabsHeaderIconPane extends JPanel implements UITabComponent {
private void show(final JPanel panel) {
int count = centerPane.getComponentCount();// 获取centerPanel中控件数
List<Component> list = new ArrayList<Component>();//
for (Component comp : centerPane.getComponents()) {
list.add(comp);
}
list.addAll(Arrays.asList(centerPane.getComponents()));
if (count > 0) {// 如果centerPanel中控件数大于0就执行效果
for (int i = 0; i < count; i++) {
Component comp = centerPane.getComponent(i);// 获得该位置的控件
@ -160,14 +159,12 @@ public class UITabsHeaderIconPane extends JPanel implements UITabComponent {
public void run() {
int height = centerPane.getHeight();
int width = centerPane.getWidth();
int step = 30;
int x = 0;
int y = -height;
for (int i = 0; i <= height; i += step) {
for (int i = 0; i <= height; i += 30) {
// 设置面板位置
currentPanel.setBounds(x, i, width, height);
panel.setBounds(x, y, width, height);
y += step;
currentPanel.setBounds(0, i, width, height);
panel.setBounds(0, y, width, height);
y += 30;
try {
Thread.sleep(3);
} catch (InterruptedException e) {

Loading…
Cancel
Save