X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FnewGUI%2FVARNAGUIModel.java;fp=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FnewGUI%2FVARNAGUIModel.java;h=edfd56f838ffdbfd4d85b4fd33096c925356063a;hb=665d2c2f4c1310e6985b93b7c2c8a8eec2fa9086;hp=0000000000000000000000000000000000000000;hpb=0e684f72690bd6532272a39ab6c188a27559fd09;p=jalview.git diff --git a/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUIModel.java b/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUIModel.java new file mode 100644 index 0000000..edfd56f --- /dev/null +++ b/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUIModel.java @@ -0,0 +1,142 @@ +package fr.orsay.lri.varna.applications.newGUI; + +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.File; +import java.io.FileFilter; +import java.io.FileNotFoundException; +import java.io.FilenameFilter; +import java.io.IOException; +import java.util.Collection; +import java.util.Date; +import java.util.regex.Pattern; + +import fr.orsay.lri.varna.exceptions.ExceptionExportFailed; +import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax; +import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed; +import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied; +import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses; +import fr.orsay.lri.varna.factories.RNAFactory; +import fr.orsay.lri.varna.models.rna.RNA; + +public class VARNAGUIModel implements Comparable { + private Date _lastModified; + private boolean _outOfSync = false; + private RNA _r = null; + private String _caption = ""; + private String _path = ""; + private String _folder = ""; + + + public static Date lastModif(String path) + { + return new Date(new File(path).lastModified()) ; + } + + public VARNAGUIModel(String folder, String path) + { + this(folder,path,lastModif(path)); + } + + public VARNAGUIModel(String folder, String path,Date lastModified) + { + _lastModified = lastModified; + _outOfSync = false; + _folder =folder; + _path = path; + String[] s = path.split(Pattern.quote(File.separator)); + if (s.length>0) + _caption = s[s.length-1]; + } + + public boolean hasChanged() + { + return _outOfSync; + } + + public boolean checkForModifications() + { + if (!lastModif(_path).equals(_lastModified) && !_outOfSync) + { + _outOfSync = true; + return true; + } + return false; + } + + + public RNA getRNA() + { + if (_r ==null) + { + try { + createRNA(); + } catch (ExceptionUnmatchedClosingParentheses e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExceptionFileFormatOrSyntax e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExceptionExportFailed e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExceptionPermissionDenied e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExceptionLoadingFailed e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return _r; + } + + private RNA createRNA() throws ExceptionUnmatchedClosingParentheses, ExceptionFileFormatOrSyntax, FileNotFoundException, ExceptionExportFailed, ExceptionPermissionDenied, ExceptionLoadingFailed + { + Collection r = RNAFactory.loadSecStr(_path); + if (r.size()>0) + { + _r = r.iterator().next(); + _r.drawRNARadiate(); + } + else + { + throw new ExceptionFileFormatOrSyntax("No valid RNA defined in this file."); + } + return _r; + } + + public String toString() + { + return _caption + (this._outOfSync?"*":""); + } + + public String getID() + { + return getRNA().getID(); + } + + public String getCaption() + { + return _caption; + } + + public String getFolder() + { + return _folder; + } + + public static DataFlavor Flavor = new DataFlavor(VARNAGUIModel.class, "VARNA Object"); + + +public int compareTo(VARNAGUIModel o) { + return _caption.compareTo(o._caption); +} + + + +}