private ProductFileChooser buildFileChooserDialog(Product product, boolean useSubset, FileFilter filter) { Preferences preferences = SnapApp.getDefault().getPreferences(); ProductFileChooser fc = new ProductFileChooser(new File(preferences.get(ProductOpener.PREFERENCES_KEY_LAST_PRODUCT_DIR, "."))); fc.setDialogType(JFileChooser.SAVE_DIALOG); fc.setSubsetEnabled(useSubset); if (filter != null) { fc.addChoosableFileFilter(filter); } fc.setProductToExport(product); return fc; } }
private File[] getSelectedFiles(ProductFileChooser fc) { File[] files = new File[0]; if (isMultiSelectionEnabled()) { files = fc.getSelectedFiles(); } else { File file = fc.getSelectedFile(); if (file != null) { files = new File[]{file}; } } return files; }
private void updateState() { if (isSubsetEnabled()) { subsetButton.setEnabled(getSelectedFile() != null || productToExport != null); File file = getSelectedFile(); if (file != null && file.isFile()) { long fileSize = Math.round(file.length() / (1024.0 * 1024.0)); if (fileSize >= 1) { sizeLabel.setText("File size: " + fileSize + " M"); } else { sizeLabel.setText("File size: < 1 M"); } } else { sizeLabel.setText(""); } } }
ProductFileChooser fc = new ProductFileChooser(new File(preferences.get(PREFERENCES_KEY_LAST_PRODUCT_DIR, userHomePath))); fc.setSubsetEnabled(isSubsetImportEnabled()); fc.setDialogTitle(SnapApp.getDefault().getInstanceName() + " - " + Bundle.CTL_OpenProductActionName()); fc.setAcceptAllFileFilterUsed(isUseAllFileFilter()); filters.forEach((filter) -> { fc.addChoosableFileFilter(filter); if (getFileFormat() != null && getFileFormat().equals(filter.getFormatName())) { fc.setFileFilter(filter); fc.setMultiSelectionEnabled(isMultiSelectionEnabled()); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); int returnVal = fc.showOpenDialog(SnapApp.getDefault().getMainFrame()); if (returnVal != JFileChooser.APPROVE_OPTION) { File currentDirectory = fc.getCurrentDirectory(); if (currentDirectory != null) { preferences.put(PREFERENCES_KEY_LAST_PRODUCT_DIR, currentDirectory.toString()); if (fc.getSubsetProduct() != null) { SnapApp.getDefault().getProductManager().addProduct(fc.getSubsetProduct()); return true; String formatName = (fc.getFileFilter() instanceof SnapFileFilter) ? ((SnapFileFilter) fc.getFileFilter()).getFormatName() : null;
ProductFileChooser fc = new ProductFileChooser(new File(preferences.get(ProductOpener.PREFERENCES_KEY_LAST_PRODUCT_DIR, "."))); fc.setDialogType(JFileChooser.SAVE_DIALOG); fc.setSubsetEnabled(true); fc.addChoosableFileFilter(getFileFilter(formatName)); fc.setProductToExport(product); int returnVal = fc.showSaveDialog(SnapApp.getDefault().getMainFrame()); if (returnVal != JFileChooser.APPROVE_OPTION) { File newFile = fc.getSelectedFile(); if (newFile == null) { Product exportProduct = fc.getSubsetProduct() != null ? fc.getSubsetProduct() : product;
fileChooser.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent event) { fileChooser.addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent event) { fileChooser.addChoosableFileFilter(filters.get(i)); int returnVal = fileChooser.showSaveDialog(SnapApp.getDefault().getMainFrame()); if (returnVal != JFileChooser.APPROVE_OPTION || fileChooser.getSelectedFile() == null) { return null; // cancelled File newFile = fileChooser.getSelectedFile(); ExportDriversFileFilter selectedFileFilter = (ExportDriversFileFilter)fileChooser.getFileFilter(); if (!selectedFileFilter.accept(newFile)) { String message = MessageFormat.format("The extension of the selected file\n" + Product exportProduct = fileChooser.getSubsetProduct() != null ? fileChooser.getSubsetProduct() : product; Band sourceBand = exportProduct.getBandAt(0); int gdalDataType = GDALUtils.getGDALDataType(sourceBand.getDataType());
if (getDialogType() == OPEN_DIALOG) { File file = getSelectedFile(); if (file == null) { setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); final FileFilter fileFilter = getFileFilter(); String formatName = (fileFilter instanceof SnapFileFilter) ? ((SnapFileFilter) fileFilter).getFormatName() : null; product = ProductIO.readProduct(file, formatName); return; newProductName = createNewProductName(product.getName(), numSubsetProducts++); } catch (IOException e) { Dialogs.showError("The product could not be read:\n" + e.getMessage()); } finally { setCursor(Cursor.getDefaultCursor()); if (StringUtils.isNotNullAndNotEmpty(getCurrentFilename())) { newProductName = getCurrentFilename(); } else { newProductName = createNewProductName(product.getName(), numSubsetProducts++); boolean approve = openProductSubsetDialog(product, newProductName); if (approve && getDialogType() == JFileChooser.OPEN_DIALOG) { approveSelection(); updateState();
private void addSubsetAcessory() { subsetButton = new JButton("Subset..."); subsetButton.setMnemonic('S'); subsetButton.addActionListener(e -> openProductSubsetDialog()); subsetButton.setEnabled(getSelectedFile() != null || productToExport != null); sizeLabel = new JLabel("0 M"); sizeLabel.setHorizontalAlignment(JLabel.RIGHT); JPanel panel = GridBagUtils.createPanel(); GridBagConstraints gbc = GridBagUtils.createConstraints( "fill=HORIZONTAL,weightx=1,anchor=NORTHWEST,insets.left=7,insets.right=7,insets.bottom=4"); GridBagUtils.addToPanel(panel, subsetButton, gbc, "gridy=0"); GridBagUtils.addToPanel(panel, sizeLabel, gbc, "gridy=1"); GridBagUtils.addVerticalFiller(panel, gbc); setAccessory(panel); addPropertyChangeListener(e -> updateState()); }
@Override public void propertyChange(PropertyChangeEvent event) { ExportDriversFileFilter selectedFileFilter = (ExportDriversFileFilter) fileChooser.getFileFilter(); String fileName = enteredFileName; if (StringUtils.isNullOrEmpty(fileName)) { fileName = selectedFileFilter.getDriverInfo().getDriverDisplayName(); } else { int index = fileName.lastIndexOf("."); if (index >= 0) { fileName = fileName.substring(0, index); } } fileName += selectedFileFilter.getDriverInfo().getExtensionName(); BasicFileChooserUI basicFileChooserUI = (BasicFileChooserUI) fileChooser.getUI(); basicFileChooserUI.setFileName(fileName); } });
public ProductFileChooser(File currentDirectory) { super(currentDirectory); setDialogType(OPEN_DIALOG); }