From: <ha...@us...> - 2006-11-22 16:33:37
|
Revision: 6287 http://svn.sourceforge.net/jmol/?rev=6287&view=rev Author: hansonr Date: 2006-11-22 08:27:52 -0800 (Wed, 22 Nov 2006) Log Message: ----------- application: allows drag/drop of files containing #jmolscript and also file drop of scripts. Modified Paths: -------------- trunk/Jmol/src/org/jmol/util/CompoundDocument.java trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java trunk/Jmol/src/org/openscience/jmol/app/Jmol.java Modified: trunk/Jmol/src/org/jmol/util/CompoundDocument.java =================================================================== --- trunk/Jmol/src/org/jmol/util/CompoundDocument.java 2006-11-22 16:25:23 UTC (rev 6286) +++ trunk/Jmol/src/org/jmol/util/CompoundDocument.java 2006-11-22 16:27:52 UTC (rev 6287) @@ -58,7 +58,7 @@ int nIntPerSector; int nDirEntriesperSector; - public CompoundDocument(String fileName, BufferedInputStream bis) { + public CompoundDocument(BufferedInputStream bis) { /* try { file = new RandomAccessFile(fileName, "r"); Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2006-11-22 16:25:23 UTC (rev 6286) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2006-11-22 16:27:52 UTC (rev 6287) @@ -93,6 +93,13 @@ commands.append("\n\n"); return commands.toString(); } + + String getFileTypeName(String fileName) { + Object br = getUnzippedBufferedReaderOrErrorMessageFromName(fileName); + if (! (br instanceof BufferedReader)) + return null; + return modelAdapter.getFileTypeName((BufferedReader) br); + } void openFile(String name) { openFile(name, null, null); @@ -164,11 +171,11 @@ isInline = true; isDOM = false; if (params == null) - fileOpenThread = new FileOpenThread(fullPathName, new StringReader( - strModel)); + fileOpenThread = new FileOpenThread(fullPathName, new BufferedReader(new StringReader( + strModel))); else - fileOpenThread = new FileOpenThread(fullPathName, new StringReader( - strModel), params); + fileOpenThread = new FileOpenThread(fullPathName, new BufferedReader(new StringReader( + strModel)), params); fileOpenThread.run(); } @@ -213,6 +220,10 @@ } void openReader(String fullPathName, String name, Reader reader) { + openBufferedReader(fullPathName, name, new BufferedReader(reader)); + } + + void openBufferedReader(String fullPathName, String name, BufferedReader reader) { openErrorMessage = null; this.fullPathName = fullPathName; fileName = name; @@ -249,7 +260,7 @@ BufferedInputStream bis = new BufferedInputStream((InputStream) t, 8192); InputStream is = bis; if (isCompoundDocument(is)) { - CompoundDocument doc = new CompoundDocument(name, bis); + CompoundDocument doc = new CompoundDocument(bis); return "" + doc.getAllData(); } else if (isGzip(is)) { is = new GZIPInputStream(bis); @@ -326,9 +337,7 @@ Logger.info("dumpDocumentBase:" + documentBase); Object inputStreamOrError = getInputStreamOrErrorMessageFromName(documentBase); - if (inputStreamOrError == null) { - Logger.error("?Que? ?null?"); - } else if (inputStreamOrError instanceof String) { + if (inputStreamOrError instanceof String) { Logger.error("Error:" + inputStreamOrError); } else { BufferedReader br = @@ -437,7 +446,7 @@ BufferedInputStream bis = new BufferedInputStream((InputStream)t, 8192); InputStream is = bis; if (isCompoundDocument(is)) { - CompoundDocument doc = new CompoundDocument(name, bis); + CompoundDocument doc = new CompoundDocument(bis); return getBufferedReaderForString("" + doc.getAllData()); } else if (isGzip(is)) { is = new GZIPInputStream(bis); @@ -471,7 +480,7 @@ String fullPathNameInThread; String nameAsGivenInThread; Object clientFile; - Reader reader; + BufferedReader reader; int[] params; FileOpenThread(String fullPathName, String nameAsGiven) { @@ -486,59 +495,39 @@ this.params = params; } - FileOpenThread(String name, Reader reader, int[] params) { + FileOpenThread(String name, BufferedReader reader, int[] params) { nameAsGivenInThread = fullPathNameInThread = name; this.reader = reader; this.params = params; } - FileOpenThread(String name, Reader reader) { + FileOpenThread(String name, BufferedReader reader) { nameAsGivenInThread = fullPathNameInThread = name; this.reader = reader; } public void run() { if (reader != null) { - openReader(reader); + openBufferedReader(reader); } else { - Object t = getInputStreamOrErrorMessageFromName(nameAsGivenInThread); - if (! (t instanceof InputStream)) { + Object t = getUnzippedBufferedReaderOrErrorMessageFromName(nameAsGivenInThread); + if (t instanceof BufferedReader) + openBufferedReader((BufferedReader) t); + else errorMessage = (t == null ? "error opening:" + nameAsGivenInThread : (String)t); - } else { - openInputStream(fullPathNameInThread, fileName, (InputStream) t); - } } if (errorMessage != null) Logger.error("error opening " + fullPathNameInThread + "\n" + errorMessage); terminated = true; } - private void openInputStream(String fullPathName, String fileName, - InputStream istream) { - BufferedInputStream bis = new BufferedInputStream(istream, 8192); - InputStream is = bis; - try { - if (isCompoundDocument(is)) { - CompoundDocument doc = new CompoundDocument(fullPathName, bis); - openReader(new StringReader("" + doc.getAllData())); - return; - } else if (isGzip(is)) { - is = new GZIPInputStream(bis); - } - openReader(new InputStreamReader(is)); - } catch (Exception ioe) { - errorMessage = ioe.getMessage(); - } - } - - private void openReader(Reader reader) { - Object clientFile = - modelAdapter.openBufferedReader(fullPathNameInThread, - new BufferedReader(reader), params); + private void openBufferedReader(BufferedReader reader) { + Object clientFile = modelAdapter.openBufferedReader(fullPathNameInThread, + reader, params); if (clientFile instanceof String) - errorMessage = (String)clientFile; + errorMessage = (String) clientFile; else this.clientFile = clientFile; } @@ -578,22 +567,21 @@ } istream[i] = (InputStream) t; } - openInputStream(fullPathNameInThread, istream); + openInputStream(istream); } if (errorMessage != null) Logger.error("error opening " + fullPathNameInThread + "\n" + errorMessage); terminated = true; } - private void openInputStream(String[] fullPathName, - InputStream[] istream) { + private void openInputStream(InputStream[] istream) { Reader[] zistream = new Reader[istream.length]; for (int i = 0; i < istream.length; i++) { BufferedInputStream bis = new BufferedInputStream(istream[i], 8192); InputStream is = bis; try { if (isCompoundDocument(is)) { - CompoundDocument doc = new CompoundDocument(fullPathName[i], bis); + CompoundDocument doc = new CompoundDocument(bis); zistream[i] = new StringReader("" + doc.getAllData()); } else if (isGzip(is)) { zistream[i] = new InputStreamReader(new GZIPInputStream(bis)); Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2006-11-22 16:25:23 UTC (rev 6286) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2006-11-22 16:27:52 UTC (rev 6287) @@ -176,6 +176,10 @@ boolean haveDisplay = true; boolean mustRender = true; + public boolean isApplet() { + return (htmlName.length() > 0); + } + public void setAppletContext(String htmlName, URL documentBase, URL codeBase, String appletProxyOrCommandOptions) { this.htmlName = htmlName; @@ -1011,10 +1015,6 @@ fileManager.setAppletProxy(appletProxy); } - public boolean isApplet() { - return (htmlName.length() > 0); - } - private void setDefaultDirectory(String dir) { global.defaultDirectory = (dir == null || dir.length() == 0 ? null : dir); } @@ -1037,8 +1037,11 @@ public void openFile(String name) { //Jmol app file dropper, main, OpenUrlAction, RecentFilesAction - //app Jmol BYPASSES SCRIPTING ** - openFile(name, null, null); + String type = fileManager.getFileTypeName(name); + checkHalt("exit"); + // assumes a Jmol script file if no other file type + script((type == null ? "script " : "load ") + + StateManager.escape(simpleReplace(name, "\\", "/"))); } void openFile(String name, int[] params, String loadScript) { Modified: trunk/Jmol/src/org/openscience/jmol/app/Jmol.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2006-11-22 16:25:23 UTC (rev 6286) +++ trunk/Jmol/src/org/openscience/jmol/app/Jmol.java 2006-11-22 16:27:52 UTC (rev 6287) @@ -309,23 +309,18 @@ FileDropper dropper = new FileDropper (); final JFrame f = frame; dropper.addPropertyChangeListener (new PropertyChangeListener () { - - public void propertyChange (PropertyChangeEvent evt) { - //System.out.println("Drop triggered..."); - f.setCursor (Cursor.getPredefinedCursor (Cursor.WAIT_CURSOR)); - - if (evt.getPropertyName ().equals (FileDropper.FD_PROPERTY_FILENAME)) { - final String filename = evt.getNewValue ().toString (); - - viewer.openFile(filename); - viewer.getOpenFileError(); - } else if (evt.getPropertyName ().equals (FileDropper.FD_PROPERTY_INLINE)) { - final String inline = evt.getNewValue().toString(); - viewer.openStringInline(inline); - } - - f.setCursor (Cursor.getDefaultCursor ()); + public void propertyChange(PropertyChangeEvent evt) { + //System.out.println("Drop triggered..."); + f.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + if (evt.getPropertyName().equals(FileDropper.FD_PROPERTY_FILENAME)) { + final String filename = evt.getNewValue().toString(); + viewer.openFile(filename); + } else if (evt.getPropertyName().equals(FileDropper.FD_PROPERTY_INLINE)) { + final String inline = evt.getNewValue().toString(); + viewer.openStringInline(inline); } + f.setCursor(Cursor.getDefaultCursor()); + } }); this.setDropTarget(new DropTarget (this, dropper)); @@ -1225,7 +1220,7 @@ int retval = openChooser.showOpenDialog(Jmol.this); if (retval == 0) { File file = openChooser.getSelectedFile(); - viewer.evalStringQuiet("load \"" + file.getAbsolutePath() +"\""); + viewer.openFile(file.getAbsolutePath()); return; } historyFile.addWindowInfo( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |