Changeset 1007 for branches/bioformats-omero
- Timestamp:
- 10/03/06 11:32:29 (2 years ago)
- Location:
- branches/bioformats-omero/src/ome/formats/testclient
- Files:
-
- 9 added
- 4 modified
-
FileQueueHandler.java (modified) (5 diffs)
-
FileQueueTable.java (modified) (15 diffs)
-
FindAccessory.java (added)
-
ImportDialog.java (modified) (2 diffs)
-
ImportHandler.java (modified) (11 diffs)
-
gfx/2leftarrow.png (added)
-
gfx/2rightarrow.png (added)
-
gfx/desktop.png (added)
-
gfx/drive.png (added)
-
gfx/home.png (added)
-
gfx/import_done_16.png (added)
-
gfx/import_icon_16.png (added)
-
readers.txt (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/bioformats-omero/src/ome/formats/testclient/FileQueueHandler.java
r997 r1007 130 130 if (dialog.cancelled == true || dialog.dataset == null) return; 131 131 132 addFileToQueue(file, dialog.dataset); 132 addFileToQueue(file, dialog.dataset, 133 dialog.dataset.getName(), dialog.project.getName()); 133 134 } 134 135 } … … 140 141 { 141 142 files = fileChooser.getSelectedFiles(); 142 143 143 144 144 if (store == null) … … 155 155 for (File f : files) 156 156 { 157 addFileToQueue(f, dialog.dataset); 157 addFileToQueue(f, dialog.dataset, 158 dialog.dataset.getName(), dialog.project.getName()); 158 159 } 159 160 } 160 161 if (prop.equals(Actions.REMOVE)) 161 162 { 162 rows = qTable.queue.getSelectedRows(); 163 164 while (rows.length > 0) 163 if (qTable.importBtn.isEnabled()) 165 164 { 166 removeFileFromQueue(rows[0]);167 165 rows = qTable.queue.getSelectedRows(); 166 167 while (rows.length > 0) 168 { 169 if (qTable.queue.getValueAt(rows[0], 2) == "added") 170 { 171 removeFileFromQueue(rows[0]); 172 rows = qTable.queue.getSelectedRows(); 173 } 174 } 168 175 } 169 } 176 177 } 178 170 179 if (prop.equals(Actions.IMPORT)) 171 180 { … … 176 185 if (store == null) 177 186 store = viewer.loginHandler.getMetadataStore(); 178 importHandler = new ImportHandler(viewer, store, reader, fads); 187 importHandler = 188 new ImportHandler(viewer, qTable, store, reader, fads); 189 179 190 } 180 191 } … … 187 198 188 199 189 private void addFileToQueue(File file, Dataset dataset )200 private void addFileToQueue(File file, Dataset dataset, String dName, String project) 190 201 { 191 202 Vector row = new Vector(); 192 203 193 204 row.add(file); 205 row.add(dName + "/" + project); 206 row.add("added"); 194 207 row.add(dataset); 195 row.add("pending");196 208 qTable.table.addRow(row); 197 qTable.importBtn.setEnabled(true); 209 if (qTable.table.getRowCount() == 1) 210 qTable.importBtn.setEnabled(true); 198 211 } 199 212 -
branches/bioformats-omero/src/ome/formats/testclient/FileQueueTable.java
r994 r1007 10 10 import java.awt.event.ActionListener; 11 11 import java.io.File; 12 import java.util.ArrayList; 12 13 13 14 import javax.swing.BorderFactory; … … 24 25 import javax.swing.border.CompoundBorder; 25 26 import javax.swing.border.EmptyBorder; 27 import javax.swing.event.ListSelectionEvent; 28 import javax.swing.event.ListSelectionListener; 26 29 import javax.swing.event.TableModelEvent; 27 30 import javax.swing.event.TableModelListener; … … 48 51 JButton importBtn; 49 52 53 private int row; 54 private int maxPlanes; 55 50 56 FileQueueTable() { 51 57 … … 62 68 63 69 // Width of the status columns 64 int statusWidth = 70;70 int statusWidth = 100; 65 71 66 72 // ----- GUI Layout Elements ----- … … 119 125 cModel.getColumn(1).setCellRenderer(new TextCellCenter()); 120 126 cModel.getColumn(2).setCellRenderer(new TextCellCenter()); 121 122 127 123 128 // Set the width of the status column … … 126 131 statusColumn.setMaxWidth(statusWidth); 127 132 statusColumn.setMinWidth(statusWidth); 133 134 135 SelectionListener listener = new SelectionListener(queue); 136 queue.getSelectionModel().addListSelectionListener(listener); 137 queue.getColumnModel().getSelectionModel() 138 .addListSelectionListener(listener); 139 140 TableColumnModel tcm = queue.getColumnModel(); 141 TableColumn column = tcm.getColumn(3); 142 tcm.removeColumn(column); 128 143 129 144 // Add the table to the scollpane … … 145 160 } 146 161 162 public void setProgressInfo(int row, int maxPlanes) 163 { 164 this.row = row; 165 this.maxPlanes = maxPlanes; 166 } 167 168 public void setProgressPending(int row) 169 { 170 if (table.getValueAt(row, 2).equals("added")) 171 table.setValueAt("pending", row, 2); 172 } 173 174 public void setProgress(int step) 175 { 176 String text = step + "/" + maxPlanes; 177 table.setValueAt(text, row, 2); 178 } 179 180 public void setProgressDone(int row) 181 { 182 table.setValueAt("done", row, 2); 183 } 184 185 public int getMaximum() 186 { 187 return maxPlanes; 188 } 189 147 190 static JButton addButton(String name, String image, String tooltip) 148 191 { … … 173 216 { 174 217 File file = new File(table.getValueAt(i, 0).toString()); 175 Dataset dataset = (Dataset) table.getValueAt(i, 1); 176 177 fads[i] = new FileAndDatasetContainer(file, dataset); 218 try { 219 Dataset dataset = (Dataset) table.getValueAt(i, 3); 220 fads[i] = new FileAndDatasetContainer(file, dataset); } 221 catch (ArrayIndexOutOfBoundsException e) {} 222 178 223 } 179 224 return fads; … … 193 238 if (src == importBtn) 194 239 { 240 queue.clearSelection(); 195 241 firePropertyChange(Actions.IMPORT, false, true); 196 242 } 197 243 } 198 199 class QueueTableModel extends DefaultTableModel implements TableModelListener { 244 245 class QueueTableModel 246 extends DefaultTableModel 247 implements TableModelListener { 200 248 201 249 private static final long serialVersionUID = 1L; 202 private String[] columnNames = {"Files in Queue", "Project/Dataset", "Status"}; 203 private Object[][] files = null; 250 private String[] columnNames = {"Files in Queue", "Project/Dataset", "Status", "DatasetNum"}; 204 251 205 252 public void tableChanged(TableModelEvent arg0) { } … … 211 258 public boolean isCellEditable(int row, int col) { return false; } 212 259 213 public void setValueAt(Object value, int row, int col) 214 { 215 files[row][col] = value; 216 fireTableCellUpdated(row,col); 217 } 260 public boolean rowSelectionAllowed() { return false; } 218 261 } 219 262 … … 242 285 // Set tool tip if desired 243 286 setToolTipText((String)value); 287 288 setEnabled(table == null || table.isEnabled()); 289 290 super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 244 291 245 292 // Since the renderer is a component, return itself … … 254 301 } 255 302 256 class LeftDotRenderer extends DefaultTableCellRenderer 303 class LeftDotRenderer 304 extends DefaultTableCellRenderer 257 305 { 258 306 public Component getTableCellRendererComponent( … … 295 343 296 344 public class TextCellCenter 297 extends DefaultTableCellRenderer345 extends DefaultTableCellRenderer 298 346 { 299 347 // This method is called each time a column header … … 309 357 setFont(UIManager.getFont("TableCell.font")); 310 358 setHorizontalAlignment(DefaultTableCellRenderer.CENTER); 311 359 312 360 // Since the renderer is a component, return itself 313 361 return this; … … 315 363 } 316 364 365 public class SelectionListener 366 implements ListSelectionListener { 367 JTable table; 368 369 // It is necessary to keep the table since it is not possible 370 // to determine the table from the event's source 371 SelectionListener(JTable table) { 372 this.table = table; 373 } 374 public void valueChanged(ListSelectionEvent e) { 375 // If cell selection is enabled, both row and column change events are fired 376 if (e.getSource() == table.getSelectionModel() 377 && table.getRowSelectionAllowed()) { 378 // Column selection changed 379 int first = e.getFirstIndex(); 380 int last = e.getLastIndex(); 381 dselectRow(first, last); 382 } else if (e.getSource() == table.getColumnModel().getSelectionModel() 383 && table.getColumnSelectionAllowed() ){ 384 // Row selection changed 385 int first = e.getFirstIndex(); 386 int last = e.getLastIndex(); 387 dselectRow(first, last); 388 } 389 390 if (e.getValueIsAdjusting()) { 391 // The mouse button has not yet been released 392 } 393 } 394 395 private void dselectRow(int first, int last) 396 { 397 for (int i = first; i <= last; i++ ) 398 { 399 try 400 { 401 if (!table.getValueAt(i, 2).equals("added") 402 && table.getSelectionModel().isSelectedIndex(i)) 403 { 404 table.getSelectionModel().removeSelectionInterval(i, i); 405 table.clearSelection(); 406 } 407 } catch (ArrayIndexOutOfBoundsException e) 408 { 409 410 } 411 } 412 } 413 } 414 317 415 public static void main (String[] args) { 318 416 -
branches/bioformats-omero/src/ome/formats/testclient/ImportDialog.java
r993 r1007 73 73 74 74 public Dataset dataset; 75 public Project project; 76 75 77 public DatasetItem[] datasetItems = null; 76 78 public ProjectItem[] projectItems = null; … … 329 331 cancelled = false; 330 332 dataset = ((DatasetItem) dbox.getSelectedItem()).getDataset(); 333 project = ((ProjectItem) pbox.getSelectedItem()).getProject(); 331 334 userPrefs.putLong("savedProject", 332 335 ((ProjectItem) pbox.getSelectedItem()).getId()); -
branches/bioformats-omero/src/ome/formats/testclient/ImportHandler.java
r997 r1007 35 35 import java.util.Date; 36 36 37 import javax.swing.JTable; 37 38 import javax.swing.ProgressMonitor; 38 39 39 40 import loci.formats.IFormatReader; 40 41 import ome.formats.OMEROMetadataStore; 42 import ome.formats.testclient.FileQueueTable.SelectionListener; 41 43 42 44 import org.apache.commons.logging.Log; … … 57 59 private TestClient viewer; 58 60 59 private ProgressMonitor monitor; 61 //private ProgressMonitor monitor; 62 63 private FileQueueTable qTable; 60 64 61 65 private static Log log = LogFactory.getLog(ImportHandler.class); … … 63 67 private OMEROMetadataStore store; 64 68 65 public ImportHandler(TestClient viewer, OMEROMetadataStore store,69 public ImportHandler(TestClient viewer, FileQueueTable qTable, OMEROMetadataStore store, 66 70 IFormatReader reader, FileAndDatasetContainer[] fads) 67 71 { … … 69 73 this.library = new ImportLibrary(store, reader, fads); 70 74 this.store = store; 75 this.qTable = qTable; 71 76 72 77 new Thread() … … 93 98 Date date = null; 94 99 95 monitor = new ProgressMonitor(viewer, null, null, 0, 0);100 //monitor = new ProgressMonitor(viewer, null, null, 0, 0); 96 101 97 102 // record initial timestamp and record total running time for the import … … 107 112 108 113 FileAndDatasetContainer[] fads = library.getFilesAndDatasets(); 109 for (int i = 0; i < fads.length; i ++) 110 { 111 String filename = fads[i].file.getAbsolutePath(); 112 viewer.appendToOutputLn("> [" + i + "] Importing \"" + filename 113 + "\""); 114 115 library.setDataset(fads[i].dataset); 116 importImage(fads[i].file, i, library.getFilesAndDatasets().length); 117 118 i++; 114 qTable.importBtn.setEnabled(false); 115 116 for(int i = 0; i < fads.length; i++) 117 { 118 qTable.setProgressPending(i); 119 119 } 120 120 121 for (int i = 0; i < fads.length; i++) 122 { 123 if (qTable.table.getValueAt(i, 2).equals("pending")) 124 { 125 String filename = fads[i].file.getAbsolutePath(); 126 viewer.appendToOutputLn("> [" + i + "] Importing \"" + filename 127 + "\""); 128 129 library.setDataset(fads[i].dataset); 130 importImage(fads[i].file, i, library.getFilesAndDatasets().length); 131 } 132 } 133 qTable.importBtn.setEnabled(true); 134 121 135 viewer.statusBar.setProgress(false, 0, ""); 122 monitor.close();136 //monitor.close(); 123 137 viewer.statusBar.setStatusIcon("gfx/import_done_16.png", "Import complete."); 124 138 … … 164 178 viewer.statusBar.setProgressValue(index); 165 179 166 monitor.setNote("<html>Importing the following file [" + (index + 1)167 + " of " + total + "] into your OMERO server: <br><br>'"168 + shortName + "'<br><br></html>");169 monitor.setMaximum(count);170 resetProgressMonitor();171 monitor.setProgress(monitor.getMinimum());180 //monitor.setNote("<html>Importing the following file [" + (index + 1) 181 // + " of " + total + "] into your OMERO server: <br><br>'" 182 // + shortName + "'<br><br></html>"); 183 //monitor.setMaximum(count); 184 //resetProgressMonitor(); 185 //monitor.setProgress(monitor.getMinimum()); 172 186 173 187 viewer.appendToOutput("> [" + index + "] Importing metadata for " … … 181 195 + "image \"" + shortName + "\"... "); 182 196 197 qTable.setProgressInfo(index, count); 198 183 199 viewer.appendToOutput("> Importing plane: "); 184 200 library.importData(pixId, fileName, new ImportLibrary.Step() … … 188 204 public void step(int i) 189 205 { 190 if (i < monitor.getMaximum())191 { 192 193 monitor.setProgress(i);206 if (i < qTable.getMaximum()) 207 { 208 //monitor.setProgress(i); 209 qTable.setProgress(i); 194 210 } 195 211 if ((i % 10) == 0 || i == 1) viewer.appendToOutput(i + ""); … … 204 220 viewer.appendToOutputLn("> [" + index 205 221 + "] Image imported successfully!"); 222 223 //System.err.println(qTable.table.getRowCount()); 224 qTable.setProgressDone(index); 206 225 207 226 } … … 223 242 } 224 243 225 /**226 * *cough* Nasty hack to get around the private "lastDisp" field semantics227 * (field visibility) of the progress monitor. *cough*228 */229 private void resetProgressMonitor()230 {231 try232 {233 Class klass = monitor.getClass();234 Field[] fields = klass.getDeclaredFields();235 236 for (Field field : fields)237 {238 if (field.getName().equals("lastDisp"))239 {240 field.setAccessible(true);241 field.setInt(monitor, 0);242 }243 }244 } catch (Exception e)245 {246 e.printStackTrace();247 // Eat it.248 }249 }244 // /** 245 // * *cough* Nasty hack to get around the private "lastDisp" field semantics 246 // * (field visibility) of the progress monitor. *cough* 247 // */ 248 // private void resetProgressMonitor() 249 // { 250 // try 251 // { 252 // Class klass = monitor.getClass(); 253 // Field[] fields = klass.getDeclaredFields(); 254 // 255 // for (Field field : fields) 256 // { 257 // if (field.getName().equals("lastDisp")) 258 // { 259 // field.setAccessible(true); 260 // field.setInt(monitor, 0); 261 // } 262 // } 263 // } catch (Exception e) 264 // { 265 // e.printStackTrace(); 266 // // Eat it. 267 // } 268 // } 250 269 }
