3434import org .scijava .task .Task ;
3535import org .scijava .task .event .TaskEvent ;
3636
37- import javax .swing .Icon ;
3837import javax .swing .JComponent ;
3938import javax .swing .JFrame ;
4039import javax .swing .JLabel ;
4443import javax .swing .JScrollPane ;
4544import javax .swing .JTable ;
4645import javax .swing .SwingConstants ;
47- import javax .swing .UIManager ;
4846import javax .swing .border .EmptyBorder ;
4947import javax .swing .plaf .basic .BasicProgressBarUI ;
5048import javax .swing .table .AbstractTableModel ;
5149import javax .swing .table .TableCellRenderer ;
5250import java .awt .BorderLayout ;
53- import java . awt . Color ;
51+
5452import java .awt .Component ;
5553import java .awt .Dimension ;
5654import 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