Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,47 @@ public void updateUI() {
TipUtil.tweakTipEditorPane(descArea);
scrollPane.setBackground(descArea.getBackground());
scrollPane.getViewport().setBackground(descArea.getBackground());
((JPanel)getContentPane()).setBorder(TipUtil.getToolTipBorder());
((JPanel) getContentPane()).setBorder(TipUtil.getToolTipBorder());

ComponentOrientation orientation = ac.getTextComponentOrientation();
setArrowIcon(forwardAction, orientation.isLeftToRight(), "forward");
setArrowIcon(backAction, orientation.isLeftToRight(), "back");
}

/**
* Sets the appropriate arrow icon for the specified navigation action based on
* the component orientation (Left-to-Right or Right-to-Left) and action type.
* <p>
* This method first checks the {@link UIManager} for a custom icon registered under
* the semantic key. If absent, it loads the default icon resource from the classpath,
* caches it in the {@link UIManager} for future use, and assigns it to the action.
*
* @param action the menu or toolbar action to update with the icon
* @param ltr {@code true} if the component orientation is Left-to-Right; {@code false} for Right-to-Left
* @param type the type of navigation action, either {@code "back"} or {@code "forward"}
*/
private static void setArrowIcon(Action action, boolean ltr, String type) {
// Determine the UIManager key based on action type and text direction
String key = "back".equals(type) ?
(ltr ? "autocomplete.descWindow.backIcon" : "autocomplete.descWindow.forwardIcon") :
(ltr ? "autocomplete.descWindow.forwardIcon" : "autocomplete.descWindow.backIcon");

Icon icon = UIManager.getIcon(key);

if (icon == null) {
// Fallback to default classpath resources if not defined in UIManager
String resourceName = key.endsWith("backIcon") ? "arrow_left.png" : "arrow_right.png";
URL url = AutoCompleteDescWindow.class.getResource(resourceName);

if (url != null) {
icon = new ImageIcon(url);
UIManager.put(key, icon);
} else {
throw new IllegalArgumentException("Icon resource not found on classpath: " + resourceName);
}
}

action.putValue(Action.SMALL_ICON, icon);
}


Expand Down Expand Up @@ -578,29 +618,23 @@ void setCompletion(Completion c, String anchor,
class ToolBarBackAction extends AbstractAction {

ToolBarBackAction(boolean ltr) {
String img = "org/fife/ui/autocomplete/arrow_" +
(ltr ? "left.png" : "right.png");
ClassLoader cl = getClass().getClassLoader();
Icon icon = new ImageIcon(cl.getResource(img));
putValue(Action.SMALL_ICON, icon);
setArrowIcon(this, ltr, "back");
}

@Override
public void actionPerformed(ActionEvent e) {
if (historyPos>0) {
if (historyPos > 0) {
HistoryEntry pair = history.get(--historyPos);
descArea.setText(pair.summary);
if (pair.anchor!=null) {
if (pair.anchor != null) {
//System.out.println("Scrolling to: " + pair.anchor);
descArea.scrollToReference(pair.anchor);
}
else {
} else {
descArea.setCaretPosition(0);
}
setActionStates();
}
}

}


Expand All @@ -610,23 +644,18 @@ public void actionPerformed(ActionEvent e) {
class ToolBarForwardAction extends AbstractAction {

ToolBarForwardAction(boolean ltr) {
String img = "org/fife/ui/autocomplete/arrow_" +
(ltr ? "right.png" : "left.png");
ClassLoader cl = getClass().getClassLoader();
Icon icon = new ImageIcon(cl.getResource(img));
putValue(Action.SMALL_ICON, icon);
setArrowIcon(this, ltr, "forward");
}

@Override
public void actionPerformed(ActionEvent e) {
if (history!=null && historyPos<history.size()-1) {
if (history != null && historyPos < history.size() - 1) {
HistoryEntry pair = history.get(++historyPos);
descArea.setText(pair.summary);
if (pair.anchor!=null) {
if (pair.anchor != null) {
//System.out.println("Scrolling to: " + pair.anchor);
descArea.scrollToReference(pair.anchor);
}
else {
} else {
descArea.setCaretPosition(0);
}
setActionStates();
Expand Down
Loading