Skip to content

Commit 4ea4f7f

Browse files
author
Anciety
authored
Merge pull request #60 from Escapingbug/file_chooser_color
fix open dir widge GUI problem
2 parents 1ca1205 + 6284a97 commit 4ea4f7f

File tree

4 files changed

+30
-33
lines changed

4 files changed

+30
-33
lines changed

Ghidra/Framework/Docking/src/main/java/docking/widgets/AbstractGCellRenderer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import javax.swing.BorderFactory;
2121
import javax.swing.JComponent;
22+
import javax.swing.UIManager;
2223
import javax.swing.border.Border;
2324

2425
import docking.widgets.label.GDHtmlLabel;
@@ -156,7 +157,7 @@ protected Font getBoldFont() {
156157
}
157158

158159
protected Color getDefaultBackgroundColor() {
159-
return Color.WHITE;
160+
return UIManager.getColor("Background");
160161
}
161162

162163
protected Color getBackgroundColorForRow(int row) {

Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/DirectoryList.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,10 @@ public void focusLost(FocusEvent e) {
184184
});
185185

186186
listEditor = new JPanel(new BorderLayout());
187-
listEditor.setBorder(BorderFactory.createLineBorder(Color.GRAY));
188187

189188
listEditor.add(listEditorLabel, BorderLayout.WEST);
190189
listEditor.add(listEditorField, BorderLayout.CENTER);
191190

192-
listEditor.setBackground(Color.WHITE);
193191
listEditorField.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
194192

195193
add(listEditor);

Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/FileChooserToggleButton.java

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,10 @@
2929
public class FileChooserToggleButton extends JToggleButton {
3030
private static final long serialVersionUID = 1L;
3131

32-
static final Border RAISED_BORDER = BorderFactory.createCompoundBorder(
33-
BorderFactory.createRaisedBevelBorder(),
34-
BorderFactory.createEmptyBorder(1,1,1,1));
3532

36-
static final Border NO_BORDER = new EmptyBorder(RAISED_BORDER.getBorderInsets(new JButton()));
37-
38-
static final Border LOWERED_BORDER = BorderFactory.createCompoundBorder(
39-
BorderFactory.createLoweredBevelBorder(),
40-
BorderFactory.createEmptyBorder(1,1,1,1));
33+
static final Border NO_BORDER = BorderFactory.createEmptyBorder(1, 1, 1, 1);
34+
static final Border RAISED_BORDER = NO_BORDER;
35+
static final Border LOWERED_BORDER = NO_BORDER;
4136

4237
public FileChooserToggleButton(String text) {
4338
super(text);
@@ -49,15 +44,26 @@ public FileChooserToggleButton(Action action) {
4944
initBorder();
5045
}
5146

47+
private void setFocusBackground() {
48+
setBackground(new Color(87, 92, 95));
49+
}
50+
51+
private void setPressBackground() {
52+
setBackground(new Color(112, 117, 120));
53+
}
54+
55+
private void clearBackground() {
56+
setBackground(Color.DARK_GRAY);
57+
}
58+
5259
private void initBorder() {
53-
setForeground(Color.WHITE);
60+
setContentAreaFilled(true);
5461
setOpaque(true);
5562
setHorizontalTextPosition(SwingConstants.CENTER);
5663
setVerticalTextPosition(SwingConstants.BOTTOM);
57-
clearBorder();
58-
59-
// prevents the WinXP LNF from painting its awkward borders
60-
setContentAreaFilled( false );
64+
this.setBorder(new EmptyBorder(4, 4, 4, 4));
65+
clearBackground();
66+
clearBorder();
6167

6268
// changes the border on hover and click
6369
addMouseListener(new ButtonMouseListener());
@@ -66,10 +72,10 @@ private void initBorder() {
6672
addChangeListener( new ChangeListener() {
6773
public void stateChanged( ChangeEvent e ) {
6874
if ( isSelected() ) {
69-
setBorder( LOWERED_BORDER );
75+
setPressBackground();
7076
}
7177
else {
72-
setBorder( NO_BORDER );
78+
clearBackground();
7379
}
7480
}
7581
} );
@@ -90,14 +96,15 @@ private class ButtonMouseListener extends MouseAdapter {
9096
private boolean inside = false;
9197

9298
private Border defaultBorder;
93-
99+
94100
@Override
95101
public void mouseEntered(MouseEvent me) {
96102
if ( isSelected() ) {
97103
return;
98104
}
99105

100106
defaultBorder = getBorder();
107+
setFocusBackground();
101108
setBorder(RAISED_BORDER);
102109
inside = true;
103110
}
@@ -109,6 +116,7 @@ public void mouseExited(MouseEvent me) {
109116
}
110117

111118
inside = false;
119+
clearBackground();
112120
restoreBorder();
113121
}
114122

@@ -119,7 +127,7 @@ public void mousePressed(MouseEvent e) {
119127
}
120128

121129
if (e.getButton() == MouseEvent.BUTTON1) {
122-
setBorder(LOWERED_BORDER);
130+
setPressBackground();
123131
}
124132
}
125133

@@ -128,6 +136,8 @@ public void mouseReleased(MouseEvent e) {
128136
if ( isSelected() ) {
129137
return;
130138
}
139+
140+
clearBackground();
131141

132142
if (inside) {
133143
setBorder(RAISED_BORDER);

Ghidra/Framework/Docking/src/main/java/docking/widgets/filechooser/GhidraFileChooser.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ public class GhidraFileChooser extends DialogComponentProvider
7171
implements GhidraFileChooserListener, FileFilter {
7272

7373
static final String UP_BUTTON_NAME = "UP_BUTTON";
74-
private static final Color FOREROUND_COLOR = Color.BLACK;
75-
private static final Color BACKGROUND_COLOR = Color.WHITE;
7674
static final String PREFERENCES_PREFIX = "G_FILE_CHOOSER";
7775
private static final String WIDTH_PREFERENCE_PREFIX = PREFERENCES_PREFIX + ".WIDTH.";
7876
private static final String HEIGHT_PREFERENCE_PREFIX = PREFERENCES_PREFIX + ".HEIGHT.";
@@ -307,7 +305,6 @@ File getFile() {
307305
myComputerButton.setName("MY_COMPUTER_BUTTON");
308306
myComputerButton.setIcon(ResourceManager.loadImage("images/computer.png"));
309307
myComputerButton.addActionListener(e -> updateMyComputer());
310-
myComputerButton.setForeground(FOREROUND_COLOR);
311308

312309
desktopButton = new FileChooserToggleButton("Desktop") {
313310
@Override
@@ -318,7 +315,6 @@ File getFile() {
318315
desktopButton.setName("DESKTOP_BUTTON");
319316
desktopButton.setIcon(ResourceManager.loadImage("images/desktop.png"));
320317
desktopButton.addActionListener(e -> updateDesktop());
321-
desktopButton.setForeground(FOREROUND_COLOR);
322318
desktopButton.setEnabled(fileChooserModel.getDesktopDirectory() != null);
323319

324320
homeButton = new FileChooserToggleButton("Home") {
@@ -330,7 +326,6 @@ File getFile() {
330326
homeButton.setName("HOME_BUTTON");
331327
homeButton.setIcon(ResourceManager.loadImage("images/user-home.png"));
332328
homeButton.addActionListener(e -> updateHome());
333-
homeButton.setForeground(FOREROUND_COLOR);
334329

335330
recentButton = new FileChooserToggleButton("Recent") {
336331
@Override
@@ -346,7 +341,6 @@ File getFile() {
346341

347342
recentButton.setIcon(multiIcon);
348343
recentButton.addActionListener(e -> updateRecent());
349-
recentButton.setForeground(FOREROUND_COLOR);
350344

351345
shortCutButtonGroup = new UnselectableButtonGroup();
352346
shortCutButtonGroup.add(myComputerButton);
@@ -362,8 +356,7 @@ File getFile() {
362356
shortCutPanel.add(recentButton);
363357

364358
JPanel panel = new JPanel(new BorderLayout());
365-
panel.setBorder(BorderFactory.createLoweredBevelBorder());
366-
panel.setBackground(BACKGROUND_COLOR.darker());
359+
//panel.setBorder(BorderFactory.createLoweredBevelBorder());
367360
panel.add(shortCutPanel, BorderLayout.NORTH);
368361
return panel;
369362
}
@@ -471,7 +464,6 @@ private JPanel buildHeaderPanel() {
471464
private void buildWaitPanel() {
472465
waitPanel = new JPanel(new BorderLayout());
473466
waitPanel.setBorder(BorderFactory.createLoweredBevelBorder());
474-
waitPanel.setBackground(BACKGROUND_COLOR);
475467
waitPanel.addMouseListener(new MouseAdapter() {
476468
@Override
477469
public void mouseReleased(MouseEvent e) {
@@ -575,7 +567,6 @@ private JScrollPane buildDirectoryList() {
575567
directoryListModel = new DirectoryListModel();
576568
directoryList = new DirectoryList(this, directoryListModel, rootPanel.getFont());
577569
directoryList.setName("LIST");
578-
directoryList.setBackground(BACKGROUND_COLOR);
579570

580571
directoryList.addFocusListener(new FocusAdapter() {
581572
@Override
@@ -585,7 +576,6 @@ public void focusGained(FocusEvent e) {
585576
});
586577

587578
directoryScroll = new JScrollPane(directoryList);
588-
directoryScroll.getViewport().setBackground(BACKGROUND_COLOR);
589579
directoryScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
590580
directoryScroll.addComponentListener(new ComponentAdapter() {
591581
//if the scroll pane is resized, we need to adjust
@@ -1471,7 +1461,6 @@ private JScrollPane buildDirectoryTable() {
14711461
directoryTableModel = new DirectoryTableModel(this);
14721462
directoryTable = new DirectoryTable(this, directoryTableModel);
14731463
directoryTable.setName("TABLE");
1474-
directoryTable.setBackground(BACKGROUND_COLOR);
14751464

14761465
directoryTable.addFocusListener(new FocusAdapter() {
14771466
@Override
@@ -1481,7 +1470,6 @@ public void focusGained(FocusEvent e) {
14811470
});
14821471

14831472
JScrollPane scrollPane = new JScrollPane(directoryTable);
1484-
scrollPane.getViewport().setBackground(BACKGROUND_COLOR);
14851473
return scrollPane;
14861474
}
14871475

0 commit comments

Comments
 (0)