Skip to content

Commit 877c6fb

Browse files
authored
Merge pull request #89 from NicoKiaru/fix-task-ui
Fix task monitor window layout
2 parents 917a751 + 182c3c4 commit 877c6fb

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/main/java/org/scijava/ui/swing/task/SwingTaskMonitorComponent.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.scijava.task.Task;
3535
import org.scijava.task.event.TaskEvent;
3636

37-
import javax.swing.Icon;
3837
import javax.swing.JComponent;
3938
import javax.swing.JFrame;
4039
import javax.swing.JLabel;
@@ -44,13 +43,12 @@
4443
import javax.swing.JScrollPane;
4544
import javax.swing.JTable;
4645
import javax.swing.SwingConstants;
47-
import javax.swing.UIManager;
4846
import javax.swing.border.EmptyBorder;
4947
import javax.swing.plaf.basic.BasicProgressBarUI;
5048
import javax.swing.table.AbstractTableModel;
5149
import javax.swing.table.TableCellRenderer;
5250
import java.awt.BorderLayout;
53-
import java.awt.Color;
51+
5452
import java.awt.Component;
5553
import java.awt.Dimension;
5654
import java.awt.Graphics;
@@ -148,6 +146,8 @@ public class SwingTaskMonitorComponent {
148146
*/
149147
private double globalProgression = 0;
150148

149+
private boolean rowHeightInitialized = false;
150+
151151
/**
152152
* Constructs a Swing Task Monitor component - clickable circular progress bar
153153
* the component can be accessed with
@@ -200,7 +200,6 @@ public void mouseClicked(MouseEvent e) {
200200
taskFrame = new JFrame("Tasks");
201201
if (undecorated) {
202202
taskFrame.setUndecorated(true);
203-
taskFrame.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.0f));
204203
}
205204

206205
// taskTable showing all tasks, contained in taskFrame
@@ -209,7 +208,6 @@ public void mouseClicked(MouseEvent e) {
209208
taskTable.setShowGrid(false);
210209
taskTable.setIntercellSpacing(new Dimension(0, 0));
211210
taskTable.setTableHeader(null); // no header
212-
taskTable.setRowHeight(65);
213211
taskTable.setRowMargin(2);
214212
taskTable.setDefaultRenderer(Task.class, new TaskRenderer(false));
215213
// restrict size of second column to the size of the stop icon
@@ -266,6 +264,12 @@ private void onEvent(final TaskEvent evt) {
266264
} else {
267265
taskTableModel.addOrUpdate(task);
268266
}
267+
if (!rowHeightInitialized) {
268+
rowHeightInitialized = true;
269+
TableCellRenderer renderer = taskTable.getDefaultRenderer(Task.class);
270+
Component c = renderer.getTableCellRendererComponent(taskTable, task, false, false, 0, 0);
271+
taskTable.setRowHeight(c.getPreferredSize().height + taskTable.getRowMargin());
272+
}
269273
// globalProgression has been updated during taskTableModel update
270274
globalProgressBar.setValue((int)(globalProgression*100));
271275
}
@@ -484,8 +488,7 @@ class TaskRenderer implements TableCellRenderer {
484488
JLabel labelTop = new JLabel(); // top label : task name and status
485489
JProgressBar progressBar = new JProgressBar(); // standard linear progress bar
486490
JLabel labelBottom = new JLabel(); // bottom label : task completion, and optionally time left
487-
Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon"); // icon for canceling task
488-
JLabel cancelTask; // container for errorIcon
491+
JLabel cancelTask; // cancel icon
489492

490493
public TaskRenderer(boolean isBordered) {
491494
labelTop.setVerticalTextPosition(SwingConstants.TOP);
@@ -498,16 +501,22 @@ public TaskRenderer(boolean isBordered) {
498501
cell.add(labelTop,"height ::14, span");
499502
cell.add(progressBar,"height ::3, span");
500503
cell.add(labelBottom, "height ::14");
501-
cancelTask = new JLabel(errorIcon, SwingConstants.CENTER);
504+
cancelTask = new JLabel("\u2715", SwingConstants.CENTER);
502505
cancelTask.setOpaque(true);
503-
cancelTask.setBackground(cell.getBackground());
504506
}
505507

506508
@Override
507509
public Component getTableCellRendererComponent(
508510
JTable table, Object tk,
509511
boolean isSelected, boolean hasFocus,
510512
int row, int column) {
513+
// Pick up LaF colors from the table
514+
cell.setBackground(table.getBackground());
515+
cell.setForeground(table.getForeground());
516+
labelTop.setForeground(table.getForeground());
517+
labelBottom.setForeground(table.getForeground());
518+
cancelTask.setBackground(table.getBackground());
519+
cancelTask.setForeground(table.getForeground());
511520
if (column==1) {
512521
return cancelTask; // second column : stop icon
513522
}

0 commit comments

Comments
 (0)