fixed icons

This commit is contained in:
Radek Davidek 2026-04-29 19:44:55 +02:00
parent 4643d06b19
commit 86204d59b4

View File

@ -501,7 +501,8 @@ public class MainWindow extends JFrame {
toolBar.removeAll(); toolBar.removeAll();
// Refresh button // Refresh button
JButton btnRefresh = new JButton(""); JButton btnRefresh = new JButton();
btnRefresh.setIcon(createToolbarRefreshIcon());
setupMainToolbarButton(btnRefresh, "Refresh active panel", new Color(140, 190, 140)); setupMainToolbarButton(btnRefresh, "Refresh active panel", new Color(140, 190, 140));
btnRefresh.addActionListener(e -> { btnRefresh.addActionListener(e -> {
if (activePanel != null && activePanel.getCurrentDirectory() != null) { if (activePanel != null && activePanel.getCurrentDirectory() != null) {
@ -512,7 +513,8 @@ public class MainWindow extends JFrame {
toolBar.addSeparator(); toolBar.addSeparator();
// Button for BRIEF mode // Button for BRIEF mode
JButton btnBrief = new JButton(""); JButton btnBrief = new JButton();
btnBrief.setIcon(createToolbarBriefIcon());
setupMainToolbarButton(btnBrief, "Brief mode - multiple columns (Ctrl+F1)", new Color(230, 180, 130)); setupMainToolbarButton(btnBrief, "Brief mode - multiple columns (Ctrl+F1)", new Color(230, 180, 130));
btnBrief.addActionListener(e -> { btnBrief.addActionListener(e -> {
if (activePanel != null) { if (activePanel != null) {
@ -521,7 +523,8 @@ public class MainWindow extends JFrame {
}); });
// Button for FULL mode // Button for FULL mode
JButton btnFull = new JButton(""); JButton btnFull = new JButton();
btnFull.setIcon(createToolbarFullIcon());
setupMainToolbarButton(btnFull, "Full mode - full information (Ctrl+F2)", new Color(140, 170, 220)); setupMainToolbarButton(btnFull, "Full mode - full information (Ctrl+F2)", new Color(140, 170, 220));
btnFull.addActionListener(e -> { btnFull.addActionListener(e -> {
if (activePanel != null) { if (activePanel != null) {
@ -535,13 +538,15 @@ public class MainWindow extends JFrame {
toolBar.addSeparator(); toolBar.addSeparator();
// Search button // Search button
JButton btnSearch = new JButton("🔍"); JButton btnSearch = new JButton();
btnSearch.setIcon(createToolbarSearchIcon());
setupMainToolbarButton(btnSearch, "Search files (Alt+F7)", new Color(200, 160, 200)); setupMainToolbarButton(btnSearch, "Search files (Alt+F7)", new Color(200, 160, 200));
btnSearch.addActionListener(e -> showSearchDialog()); btnSearch.addActionListener(e -> showSearchDialog());
toolBar.add(btnSearch); toolBar.add(btnSearch);
// Sync button // Sync button
JButton btnSync = new JButton(""); JButton btnSync = new JButton();
btnSync.setIcon(createToolbarCompareIcon());
setupMainToolbarButton(btnSync, "Compare directories", new Color(150, 200, 200)); setupMainToolbarButton(btnSync, "Compare directories", new Color(150, 200, 200));
btnSync.addActionListener(e -> showSyncDialog()); btnSync.addActionListener(e -> showSyncDialog());
toolBar.add(btnSync); toolBar.add(btnSync);
@ -713,6 +718,191 @@ public class MainWindow extends JFrame {
return new ImageIcon(img.getScaledInstance(width, height, Image.SCALE_SMOOTH)); return new ImageIcon(img.getScaledInstance(width, height, Image.SCALE_SMOOTH));
} }
private Icon createToolbarSearchIcon() {
return new Icon() {
private final int w = 16;
private final int h = 16;
@Override
public int getIconWidth() {
return w;
}
@Override
public int getIconHeight() {
return h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D) g.create();
try {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(c != null ? c.getForeground() : Color.DARK_GRAY);
g2.setStroke(new BasicStroke(2f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
int cx = x + 6;
int cy = y + 6;
int r = 4;
g2.drawOval(cx - r, cy - r, r * 2, r * 2);
g2.drawLine(cx + r - 1, cy + r - 1, x + 14, y + 14);
} finally {
g2.dispose();
}
}
};
}
private Icon createToolbarRefreshIcon() {
return new Icon() {
private final int w = 16;
private final int h = 16;
@Override
public int getIconWidth() {
return w;
}
@Override
public int getIconHeight() {
return h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D) g.create();
try {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(c != null ? c.getForeground() : Color.DARK_GRAY);
g2.setStroke(new BasicStroke(2f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
g2.drawArc(x + 2, y + 2, 10, 10, 35, 255);
g2.drawLine(x + 11, y + 2, x + 14, y + 3);
g2.drawLine(x + 11, y + 2, x + 12, y + 5);
} finally {
g2.dispose();
}
}
};
}
private Icon createToolbarBriefIcon() {
return new Icon() {
private final int w = 16;
private final int h = 16;
@Override
public int getIconWidth() {
return w;
}
@Override
public int getIconHeight() {
return h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D) g.create();
try {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(c != null ? c.getForeground() : Color.DARK_GRAY);
g2.setStroke(new BasicStroke(2f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
// Three vertical columns to represent compact brief layout.
int colW = 3;
int gap = 2;
int startX = x + 1;
int top = y + 2;
int height = 12;
for (int i = 0; i < 3; i++) {
int cx = startX + i * (colW + gap);
g2.drawRoundRect(cx, top, colW, height, 2, 2);
}
} finally {
g2.dispose();
}
}
};
}
private Icon createToolbarFullIcon() {
return new Icon() {
private final int w = 16;
private final int h = 16;
@Override
public int getIconWidth() {
return w;
}
@Override
public int getIconHeight() {
return h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D) g.create();
try {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(c != null ? c.getForeground() : Color.DARK_GRAY);
g2.setStroke(new BasicStroke(2f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
// List rows with a side column to represent full-detail table layout.
g2.drawRoundRect(x + 1, y + 2, 4, 12, 2, 2);
g2.drawLine(x + 7, y + 4, x + 14, y + 4);
g2.drawLine(x + 7, y + 8, x + 14, y + 8);
g2.drawLine(x + 7, y + 12, x + 14, y + 12);
} finally {
g2.dispose();
}
}
};
}
private Icon createToolbarCompareIcon() {
return new Icon() {
private final int w = 16;
private final int h = 16;
@Override
public int getIconWidth() {
return w;
}
@Override
public int getIconHeight() {
return h;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
Graphics2D g2 = (Graphics2D) g.create();
try {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(c != null ? c.getForeground() : Color.DARK_GRAY);
g2.setStroke(new BasicStroke(2f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
// Two panes side by side with opposing arrows: directory compare.
g2.drawRoundRect(x + 1, y + 2, 5, 11, 2, 2);
g2.drawRoundRect(x + 10, y + 2, 5, 11, 2, 2);
g2.drawLine(x + 7, y + 6, x + 9, y + 6);
g2.drawLine(x + 8, y + 5, x + 9, y + 6);
g2.drawLine(x + 8, y + 7, x + 9, y + 6);
g2.drawLine(x + 9, y + 10, x + 7, y + 10);
g2.drawLine(x + 8, y + 9, x + 7, y + 10);
g2.drawLine(x + 8, y + 11, x + 7, y + 10);
} finally {
g2.dispose();
}
}
};
}
private void setupMainToolbarButton(JButton btn, String tooltip, Color color) { private void setupMainToolbarButton(JButton btn, String tooltip, Color color) {
int btnSize = config != null ? config.getToolbarButtonSize() : 35; int btnSize = config != null ? config.getToolbarButtonSize() : 35;
if (btnSize < 35) btnSize = 35; if (btnSize < 35) btnSize = 35;