[autocomplete] 22/143: Better RTL support for AutoComplete.

Benjamin Mesing ben at alioth.debian.org
Sat Oct 19 12:53:11 UTC 2013


This is an automated email from the git hooks/post-receive script.

ben pushed a commit to branch master
in repository autocomplete.

commit 456d1867bd541be670ab20d61211454ad93d8417
Author: bobbylight <robert at fifesoft.com>
Date:   Wed Jun 17 13:21:15 2009 +0000

    Better RTL support for AutoComplete.
---
 .../ui/autocomplete/AutoCompleteDescWindow.java     |   19 +++++++++++++------
 .../ui/autocomplete/AutoCompletePopupWindow.java    |    7 ++++---
 src/org/fife/ui/autocomplete/AutoCompletion.java    |   17 +++++++++++++++++
 src/org/fife/ui/autocomplete/SizeGrip.java          |    9 ++++-----
 4 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/src/org/fife/ui/autocomplete/AutoCompleteDescWindow.java b/src/org/fife/ui/autocomplete/AutoCompleteDescWindow.java
index 022a7fa..e90d59c 100644
--- a/src/org/fife/ui/autocomplete/AutoCompleteDescWindow.java
+++ b/src/org/fife/ui/autocomplete/AutoCompleteDescWindow.java
@@ -25,6 +25,7 @@ package org.fife.ui.autocomplete;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
+import java.awt.ComponentOrientation;
 import java.awt.Font;
 import java.awt.SystemColor;
 import java.awt.Window;
@@ -132,6 +133,8 @@ class AutoCompleteDescWindow extends JWindow implements HyperlinkListener {
 		super(owner);
 		this.ac = ac;
 
+		ComponentOrientation o = ac.getTextComponentOrientation();
+		
 		JPanel cp = new JPanel(new BorderLayout());
 //		cp.setBorder(BorderFactory.createLineBorder(Color.BLACK));
 
@@ -145,8 +148,8 @@ class AutoCompleteDescWindow extends JWindow implements HyperlinkListener {
 		cp.add(scrollPane);
 
 		descWindowNavBar = new JToolBar();
-		backAction = new ToolBarBackAction();
-		forwardAction = new ToolBarForwardAction();
+		backAction = new ToolBarBackAction(o.isLeftToRight());
+		forwardAction = new ToolBarForwardAction(o.isLeftToRight());
 		descWindowNavBar.setFloatable(false);
 		descWindowNavBar.add(new JButton(backAction));
 		descWindowNavBar.add(new JButton(forwardAction));
@@ -404,9 +407,11 @@ class AutoCompleteDescWindow extends JWindow implements HyperlinkListener {
 	 */
 	class ToolBarBackAction extends AbstractAction {
 
-		public ToolBarBackAction() {
+		public ToolBarBackAction(boolean ltr) {
+			String img = "org/fife/ui/autocomplete/arrow_" +
+						(ltr ? "left.png" : "right.png");
 			ClassLoader cl = getClass().getClassLoader();
-			URL url = cl.getResource("org/fife/ui/autocomplete/arrow_left.png");
+			URL url = cl.getResource(img);
 			try {
 				Icon icon = new ImageIcon(ImageIO.read(url));
 				putValue(Action.SMALL_ICON, icon);
@@ -432,9 +437,11 @@ class AutoCompleteDescWindow extends JWindow implements HyperlinkListener {
 	 */
 	class ToolBarForwardAction extends AbstractAction {
 
-		public ToolBarForwardAction() {
+		public ToolBarForwardAction(boolean ltr) {
+			String img = "org/fife/ui/autocomplete/arrow_" +
+							(ltr ? "right.png" : "left.png");
 			ClassLoader cl = getClass().getClassLoader();
-			URL url = cl.getResource("org/fife/ui/autocomplete/arrow_right.png");
+			URL url = cl.getResource(img);
 			try {
 				Icon icon = new ImageIcon(ImageIO.read(url));
 				putValue(Action.SMALL_ICON, icon);
diff --git a/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java b/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java
index 3cd33b4..a758582 100644
--- a/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java
+++ b/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java
@@ -136,7 +136,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
 	public AutoCompletePopupWindow(Window parent, AutoCompletion ac) {
 
 		super(parent);
-		ComponentOrientation o = parent.getComponentOrientation();
+		ComponentOrientation o = ac.getTextComponentOrientation();
 
 		this.ac = ac;
 		model = new CompletionListModel();
@@ -197,6 +197,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
 	 */
 	private AutoCompleteDescWindow createDescriptionWindow() {
 		AutoCompleteDescWindow dw = new AutoCompleteDescWindow(this, ac);
+		dw.applyComponentOrientation(ac.getTextComponentOrientation());
 		Dimension size = preferredDescWindowSize;
 		if (size==null) {
 			size = getSize();
@@ -385,7 +386,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
 
 		// Try to position to the right first (LTR)
 		int x; 
-		if (getComponentOrientation().isLeftToRight()) {
+		if (ac.getTextComponentOrientation().isLeftToRight()) {
 			x = getX() + getWidth() + 5;
 			if (x+descWindow.getWidth()>screenSize.width) { // doesn't fit
 				x = getX() - 5 - descWindow.getWidth();
@@ -616,7 +617,7 @@ class AutoCompletePopupWindow extends JWindow implements CaretListener,
 		// Get x-coordinate of completions.  Try to align left edge with the
 		// caret first.
 		int x = r.x;
-		if (!getComponentOrientation().isLeftToRight()) {
+		if (!ac.getTextComponentOrientation().isLeftToRight()) {
 			x -= getWidth(); // RTL => align right edge
 		}
 		if (x<0) {
diff --git a/src/org/fife/ui/autocomplete/AutoCompletion.java b/src/org/fife/ui/autocomplete/AutoCompletion.java
index 65d0684..33dea51 100644
--- a/src/org/fife/ui/autocomplete/AutoCompletion.java
+++ b/src/org/fife/ui/autocomplete/AutoCompletion.java
@@ -368,6 +368,18 @@ public class AutoCompletion implements HierarchyListener {
 
 
 	/**
+	 * Returns the orientation of the text component we're installed to.
+	 *
+	 * @return The orientation of the text component, or <code>null</code> if
+	 *         we are not installed on one.
+	 */
+	ComponentOrientation getTextComponentOrientation() {
+		return textComponent==null ? null :
+									textComponent.getComponentOrientation();
+	}
+
+
+	/**
 	 * Returns the "trigger key" used for autocomplete.
 	 *
 	 * @return The trigger key.
@@ -613,6 +625,11 @@ try {
 
 			if (popupWindow==null) {
 				popupWindow = new AutoCompletePopupWindow(parentWindow, this);
+				// Completion is usually done for code, which is always done
+				// LTR, so make completion stuff RTL only if text component is
+				// also RTL.
+				popupWindow.applyComponentOrientation(
+											getTextComponentOrientation());
 				if (renderer!=null) {
 					popupWindow.setListCellRenderer(renderer);
 				}
diff --git a/src/org/fife/ui/autocomplete/SizeGrip.java b/src/org/fife/ui/autocomplete/SizeGrip.java
index df2ddd6..637268d 100644
--- a/src/org/fife/ui/autocomplete/SizeGrip.java
+++ b/src/org/fife/ui/autocomplete/SizeGrip.java
@@ -62,7 +62,6 @@ class SizeGrip extends JPanel {
 		MouseHandler adapter = new MouseHandler();
 		addMouseListener(adapter);
 		addMouseMotionListener(adapter);
-		possiblyFixCursor(ComponentOrientation.getOrientation(getLocale()));
 		setPreferredSize(new Dimension(16, 16));
 	}
 
@@ -74,7 +73,7 @@ class SizeGrip extends JPanel {
 	 * @param o The new orientation.
 	 */
 	public void applyComponentOrientation(ComponentOrientation o) {
-		possiblyFixCursor(o);
+		possiblyFixCursor(o.isLeftToRight());
 		super.applyComponentOrientation(o);
 	}
 
@@ -176,11 +175,11 @@ class SizeGrip extends JPanel {
 	 * Ensures that the cursor for this component is appropriate for the
 	 * orientation.
 	 *
-	 * @param o The new orientation.
+	 * @param ltr Whether the current component orientation is LTR.
 	 */
-	protected void possiblyFixCursor(ComponentOrientation o) {
+	protected void possiblyFixCursor(boolean ltr) {
 		int cursor = Cursor.NE_RESIZE_CURSOR;
-		if (o.isLeftToRight()) {
+		if (ltr) {
 			cursor = Cursor.NW_RESIZE_CURSOR;
 		}
 		if (cursor!=getCursor().getType()) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/autocomplete.git



More information about the pkg-java-commits mailing list