From 34964d6dc5f8209714d3f66de7b34bf8fd10e38f Mon Sep 17 00:00:00 2001 From: Ezequiel Valencia Date: Tue, 10 Sep 2024 14:50:34 -0400 Subject: [PATCH] Quick Fix --- .../java/org/vcell/N5/SimResultsLoader.java | 32 ++++++++++++++++ .../java/org/vcell/N5/UI/N5ExportTable.java | 37 +++++++++++++++++-- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/view-simulation-results/src/main/java/org/vcell/N5/SimResultsLoader.java b/view-simulation-results/src/main/java/org/vcell/N5/SimResultsLoader.java index 00834b8..9a2e7ac 100644 --- a/view-simulation-results/src/main/java/org/vcell/N5/SimResultsLoader.java +++ b/view-simulation-results/src/main/java/org/vcell/N5/SimResultsLoader.java @@ -216,6 +216,38 @@ private void setUnits(N5Reader n5Reader, ImagePlus imagePlus){ } } + public static void openLocalN5FS(ArrayList filesToOpen){ + N5ExportTable.enableCriticalButtons(false); + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + fileChooser.setAcceptAllFileFilterUsed(false); + int result = fileChooser.showOpenDialog(null); + if (result == JFileChooser.APPROVE_OPTION){ + File file = fileChooser.getCurrentDirectory(); + N5ExportTable.exportTableDialog.setCursor(new Cursor(Cursor.WAIT_CURSOR)); + Thread openN5FileDataset = new Thread(() -> { + try{ + for(SimResultsLoader simResultsLoader: filesToOpen){ + simResultsLoader.setSelectedLocalFile(file); + ImagePlus imagePlus = simResultsLoader.getImgPlusFromLocalN5File(); + imagePlus.show(); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } finally { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + N5ExportTable.exportTableDialog.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + N5ExportTable.enableCriticalButtons(true); + } + }); + } + }); + openN5FileDataset.start(); + } + } + public static void openN5FileDataset(ArrayList filesToOpen, boolean openInMemory){ N5ExportTable.enableCriticalButtons(false); diff --git a/view-simulation-results/src/main/java/org/vcell/N5/UI/N5ExportTable.java b/view-simulation-results/src/main/java/org/vcell/N5/UI/N5ExportTable.java index efbbfd0..e59cde0 100644 --- a/view-simulation-results/src/main/java/org/vcell/N5/UI/N5ExportTable.java +++ b/view-simulation-results/src/main/java/org/vcell/N5/UI/N5ExportTable.java @@ -1,8 +1,14 @@ package org.vcell.N5.UI; +import ij.ImagePlus; +import net.imglib2.cache.img.CachedCellImg; +import net.imglib2.img.display.imagej.ImageJFunctions; +import net.imglib2.type.numeric.real.DoubleType; +import org.janelia.saalfeldlab.n5.N5FSReader; import org.scijava.log.Logger; import org.vcell.N5.ExportDataRepresentation; import org.vcell.N5.N5ImageHandler; +import org.vcell.N5.SimCacheLoader; import org.vcell.N5.SimResultsLoader; import javax.swing.*; @@ -18,6 +24,7 @@ import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; import java.io.FileNotFoundException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -35,6 +42,7 @@ public class N5ExportTable implements ActionListener, ListSelectionListener { private JSplitPane exportDetails; private static JButton open; + private static JButton openLocal = new JButton("Open N5 Local"); private static JButton copyLink; private static JButton refreshButton; private static JButton useN5Link; @@ -256,8 +264,6 @@ private JPanel topPanel(){ gridBagConstraints.gridy = 1; userButtonsPanel.add(bottomRow, gridBagConstraints); - - // buttonsPanel.add(questionMark); @@ -283,12 +289,15 @@ private JPanel topPanel(){ JPanel topBar = new JPanel(); topBar.setPreferredSize(new Dimension(paneWidth, 100)); topBar.setLayout(new BorderLayout()); + topBar.add(openLocal); topBar.add(userButtonsPanel, BorderLayout.EAST); topBar.add(timeFilter, BorderLayout.WEST); topBar.setBorder(BorderFactory.createTitledBorder(lowerEtchedBorder, " User Options ")); + refreshButton.addActionListener(this); open.addActionListener(this); + openLocal.addActionListener(this); copyLink.addActionListener(this); questionMark.addActionListener(this); useN5Link.addActionListener(this); @@ -356,7 +365,29 @@ public void actionPerformed(ActionEvent e) { new HelpExplanation().displayHelpMenu(); } else if (e.getSource().equals(useN5Link)) { remoteFileSelection.setVisible(true); - } else if (e.getSource().equals(includeExampleExports)){ + } else if (e.getSource().equals(openLocal)){ + ArrayList filesToOpen = new ArrayList<>(); + for(int row: exportListTable.getSelectedRows()){ + String uri = n5ExportTableModel.getRowData(row).uri; + SimResultsLoader simResultsLoader = new SimResultsLoader(uri, n5ExportTableModel.getRowData(row).savedFileName); + filesToOpen.add(simResultsLoader); + } + SimResultsLoader.openLocalN5FS(filesToOpen); +// JFileChooser fileChooser = new JFileChooser(); +// int r = fileChooser.showDialog(null, "Open"); +// if (r == JFileChooser.APPROVE_OPTION){ +// File file = fileChooser.getSelectedFile(); +// N5FSReader n5FSReader = new N5FSReader(file.getPath()); +// n5FSReader.list("/"); +// +// +// SimCacheLoader simCacheLoader = SimCacheLoader.factoryDefault(n5FSReader, dataSetChosen); +// CachedCellImg cachedCellImg = simCacheLoader.createCachedCellImage(); +// ImagePlus imagePlus = ImageJFunctions.wrap(cachedCellImg, dataSetChosen); +// imagePlus.show(); +// } + } + else if (e.getSource().equals(includeExampleExports)){ if(includeExampleExports.isSelected()){ updateExampleExportsToTable(); return;