public void actionPerformed(ActionEvent e) { if (readOnly) { return; } JFileChooser fc = getFileChooser(); File currentDirectory = fc.getCurrentDirectory(); if (!currentDirectory.exists()) { JOptionPane.showMessageDialog( fc, newFolderParentDoesntExistText, newFolderParentDoesntExistTitleText, JOptionPane.WARNING_MESSAGE); return; } File newFolder; try { newFolder = fc.getFileSystemView().createNewFolder(currentDirectory); if (fc.isMultiSelectionEnabled()) { fc.setSelectedFiles(new File[] {newFolder}); } else { fc.setSelectedFile(newFolder); } } catch (IOException exc) { JOptionPane.showMessageDialog( fc, newFolderErrorText + newFolderErrorSeparator + exc, newFolderErrorText, JOptionPane.ERROR_MESSAGE); return; } fc.rescanCurrentDirectory(); }
public File copyFileToBundle(String filename) { File f = new File(filename); String bundlePath = getSrcBundle(); if (f.exists()) { try { File newFile = FileManager.smartCopy(filename, bundlePath); return newFile; } catch (IOException e) { Debug.error( me + "copyFileToBundle: Problem while trying to save %s\n%s", filename, e.getMessage()); return f; } } return null; }
/** * Open a file. If it's a directory, ask to open all images as a sequence in a stack or * individually. */ public void openFile(File f) { if (IJ.debugMode) IJ.log("DragAndDrop.openFile: " + f); try { if (null == f) return; String path = f.getCanonicalPath(); if (f.exists()) { if (f.isDirectory()) openDirectory(f, path); else { if (openAsVirtualStack && (path.endsWith(".tif") || path.endsWith(".TIF"))) (new FileInfoVirtualStack()).run(path); else (new Opener()).openAndAddToRecent(path); OpenDialog.setLastDirectory(f.getParent() + File.separator); OpenDialog.setLastName(f.getName()); } } else { IJ.log("File not found: " + path); } } catch (Throwable e) { if (!Macro.MACRO_CANCELED.equals(e.getMessage())) IJ.handleException(e); } }
/** Read the entries given in the uk.ac.sanger.artemis.ini file. */ private void readDefaultEntries() { final EntryInformation artemis_entry_information = Options.getArtemisEntryInformation(); final String default_sequence_file_name = Options.getOptions().getDefaultSequenceFileName(); final String default_feature_file_name = Options.getOptions().getDefaultFeatureFileName(); if (default_sequence_file_name != null) { final String default_sequence_file_name_embl = default_sequence_file_name + "_embl"; uk.ac.sanger.artemis.io.Entry new_embl_entry = null; // try opening the default sequence file with "_embl" added to the name // if that fails try the plain sequence file name final Document entry_document = DocumentFactory.makeDocument(default_sequence_file_name_embl); final InputStreamProgressListener progress_listener = getInputStreamProgressListener(); entry_document.addInputStreamProgressListener(progress_listener); if (entry_document.readable()) { new_embl_entry = EntryFileDialog.getEntryFromFile( this, entry_document, artemis_entry_information, false); } if (new_embl_entry == null || new_embl_entry.getSequence() == null || new_embl_entry.getSequence().length() == 0) { final File entry_file = new File(default_sequence_file_name); if (entry_file.exists()) { new_embl_entry = EntryFileDialog.getEntryFromFile( this, entry_document, artemis_entry_information, false); } else { // read failed System.err.println( "file does not exist: " + default_sequence_file_name + "(given in options files)"); return; } } if (new_embl_entry == null || new_embl_entry.getSequence() == null || new_embl_entry.getSequence().length() == 0) { // read failed System.err.println( "failed to read " + default_sequence_file_name + "(given in options files)"); return; } getStatusLabel().setText(""); try { final Entry entry = new Entry(new_embl_entry); final EntryEdit new_entry_edit = makeEntryEdit(entry); new_entry_edit.setVisible(true); if (default_feature_file_name != null) { final Document feature_document = DocumentFactory.makeDocument(default_feature_file_name); final uk.ac.sanger.artemis.io.Entry new_embl_table_entry = EntryFileDialog.getEntryFromFile( this, feature_document, artemis_entry_information, false); if (new_embl_table_entry == null) // open failed return; final EntryGroup entry_group = new_entry_edit.getEntryGroup(); final Entry new_table_entry = new Entry(entry.getBases(), new_embl_table_entry); entry_group.add(new_table_entry); } } catch (OutOfRangeException e) { new MessageDialog( this, "read failed: one of the features in " + default_feature_file_name + " has an out of range location: " + e.getMessage()); } catch (NoSequenceException e) { new MessageDialog( this, "read failed: " + new_embl_entry.getName() + " contains no sequence"); } } }
/** Read the entries named in args and in the diana.ini file. */ protected void readArgsAndOptions(final String[] args) { if (args.length == 0) { if (System.getProperty("chado") != null && (args.length < 1 || args[0].indexOf(':') == -1)) fm = new LocalAndRemoteFileManager(ArtemisMain.this); // open the entries given in the options file(diana.ini) readDefaultEntries(); return; } if (args[0].equals("-biojava")) { handleBioJava(args); return; } final EntryInformation artemis_entry_information = Options.getArtemisEntryInformation(); EntryEdit last_entry_edit = null; boolean seen_plus = false; for (int i = 0; i < args.length; ++i) { String new_entry_name = args[i]; if (new_entry_name.length() == 0) continue; if (new_entry_name.equals("+")) { seen_plus = true; continue; } if (new_entry_name.startsWith("+") && last_entry_edit != null || seen_plus) { // new feature file final Document entry_document; if (seen_plus) entry_document = DocumentFactory.makeDocument(new_entry_name); else entry_document = DocumentFactory.makeDocument(new_entry_name.substring(1)); final InputStreamProgressListener progress_listener = getInputStreamProgressListener(); entry_document.addInputStreamProgressListener(progress_listener); final uk.ac.sanger.artemis.io.Entry new_embl_entry = EntryFileDialog.getEntryFromFile( this, entry_document, artemis_entry_information, false); if (new_embl_entry == null) // the read failed break; try { final Entry new_entry = new Entry(last_entry_edit.getEntryGroup().getBases(), new_embl_entry); last_entry_edit.getEntryGroup().add(new_entry); } catch (OutOfRangeException e) { new MessageDialog( this, "read failed: one of the features in " + new_entry_name + " has an out of range " + "location: " + e.getMessage()); } } else if (System.getProperty("chado") != null && new_entry_name.indexOf(':') > -1) { // open from database e.g. Pfalciparum:Pf3D7_09:95000..150000 Splash.logger4j.info("OPEN ENTRY " + new_entry_name); getStatusLabel().setText("Connecting ..."); DatabaseEntrySource entry_source = new DatabaseEntrySource(); boolean promptUser = true; if (System.getProperty("read_only") != null) { promptUser = false; entry_source.setReadOnly(true); } if (!entry_source.setLocation(promptUser)) return; last_entry_edit = DatabaseJPanel.show( entry_source, this, getInputStreamProgressListener(), new_entry_name); } else { // new sequence file if (last_entry_edit != null) { last_entry_edit.setVisible(true); last_entry_edit = null; } if (new_entry_name.indexOf("://") == -1) { File file = new File(new_entry_name); if (!file.exists()) { JOptionPane.showMessageDialog( null, "File " + new_entry_name + " not found.\n" + "Check the file name.", "File Not Found", JOptionPane.WARNING_MESSAGE); } } final Document entry_document = DocumentFactory.makeDocument(new_entry_name); entry_document.addInputStreamProgressListener(getInputStreamProgressListener()); final uk.ac.sanger.artemis.io.Entry new_embl_entry = EntryFileDialog.getEntryFromFile( this, entry_document, artemis_entry_information, false); if (new_embl_entry == null) // the read failed break; try { final Entry entry = new Entry(new_embl_entry); last_entry_edit = makeEntryEdit(entry); addEntryEdit(last_entry_edit); getStatusLabel().setText(""); } catch (OutOfRangeException e) { new MessageDialog( this, "read failed: one of the features in " + new_entry_name + " has an out of range " + "location: " + e.getMessage()); break; } catch (NoSequenceException e) { new MessageDialog(this, "read failed: " + new_entry_name + " contains no sequence"); break; } } } if (System.getProperty("offset") != null) last_entry_edit.getGotoEventSource().gotoBase(Integer.parseInt(System.getProperty("offset"))); last_entry_edit.setVisible(true); for (int entry_index = 0; entry_index < entry_edit_objects.size(); ++entry_index) { if (System.getProperty("offset") != null) entry_edit_objects .elementAt(entry_index) .getGotoEventSource() .gotoBase(Integer.parseInt(System.getProperty("offset"))); } }
public void actionPerformed(ActionEvent e) { if (isDirectorySelected()) { File dir = getDirectory(); if (dir != null) { try { // Strip trailing ".." dir = ShellFolder.getNormalizedFile(dir); } catch (IOException ex) { // Ok, use f as is } changeDirectory(dir); return; } } JFileChooser chooser = getFileChooser(); String filename = getFileName(); FileSystemView fs = chooser.getFileSystemView(); File dir = chooser.getCurrentDirectory(); if (filename != null) { // Remove whitespaces from end of filename int i = filename.length() - 1; while (i >= 0 && filename.charAt(i) <= ' ') { i--; } filename = filename.substring(0, i + 1); } if (filename == null || filename.length() == 0) { // no file selected, multiple selection off, therefore cancel the approve action resetGlobFilter(); return; } File selectedFile = null; File[] selectedFiles = null; // Unix: Resolve '~' to user's home directory if (File.separatorChar == '/') { if (filename.startsWith("~/")) { filename = System.getProperty("user.home") + filename.substring(1); } else if (filename.equals("~")) { filename = System.getProperty("user.home"); } } if (chooser.isMultiSelectionEnabled() && filename.length() > 1 && filename.charAt(0) == '"' && filename.charAt(filename.length() - 1) == '"') { List<File> fList = new ArrayList<File>(); String[] files = filename.substring(1, filename.length() - 1).split("\" \""); // Optimize searching files by names in "children" array Arrays.sort(files); File[] children = null; int childIndex = 0; for (String str : files) { File file = fs.createFileObject(str); if (!file.isAbsolute()) { if (children == null) { children = fs.getFiles(dir, false); Arrays.sort(children); } for (int k = 0; k < children.length; k++) { int l = (childIndex + k) % children.length; if (children[l].getName().equals(str)) { file = children[l]; childIndex = l + 1; break; } } } fList.add(file); } if (!fList.isEmpty()) { selectedFiles = fList.toArray(new File[fList.size()]); } resetGlobFilter(); } else { selectedFile = fs.createFileObject(filename); if (!selectedFile.isAbsolute()) { selectedFile = fs.getChild(dir, filename); } // check for wildcard pattern FileFilter currentFilter = chooser.getFileFilter(); if (!selectedFile.exists() && isGlobPattern(filename)) { changeDirectory(selectedFile.getParentFile()); if (globFilter == null) { globFilter = new GlobFilter(); } try { globFilter.setPattern(selectedFile.getName()); if (!(currentFilter instanceof GlobFilter)) { actualFileFilter = currentFilter; } chooser.setFileFilter(null); chooser.setFileFilter(globFilter); return; } catch (PatternSyntaxException pse) { // Not a valid glob pattern. Abandon filter. } } resetGlobFilter(); // Check for directory change action boolean isDir = (selectedFile != null && selectedFile.isDirectory()); boolean isTrav = (selectedFile != null && chooser.isTraversable(selectedFile)); boolean isDirSelEnabled = chooser.isDirectorySelectionEnabled(); boolean isFileSelEnabled = chooser.isFileSelectionEnabled(); boolean isCtrl = (e != null && (e.getModifiers() & Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()) != 0); if (isDir && isTrav && (isCtrl || !isDirSelEnabled)) { changeDirectory(selectedFile); return; } else if ((isDir || !isFileSelEnabled) && (!isDir || !isDirSelEnabled) && (!isDirSelEnabled || selectedFile.exists())) { selectedFile = null; } } if (selectedFiles != null || selectedFile != null) { if (selectedFiles != null || chooser.isMultiSelectionEnabled()) { if (selectedFiles == null) { selectedFiles = new File[] {selectedFile}; } chooser.setSelectedFiles(selectedFiles); // Do it again. This is a fix for bug 4949273 to force the // selected value in case the ListSelectionModel clears it // for non-existing file names. chooser.setSelectedFiles(selectedFiles); } else { chooser.setSelectedFile(selectedFile); } chooser.approveSelection(); } else { if (chooser.isMultiSelectionEnabled()) { chooser.setSelectedFiles(null); } else { chooser.setSelectedFile(null); } chooser.cancelSelection(); } }