From: Steve S. <se...@us...> - 2007-08-31 09:36:08
|
Update of /cvsroot/gmod/apollo/src/java/apollo/gui/evidencepanel In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv27729/evidencepanel Modified Files: EvidencePanel.java EvidencePanelContainer.java EvidencePanelOrientationManager.java Log Message: Small thing first: Changed FeatureTreeFrame so that when a new set is loaded it no longer hides, but instead just updates its set. Should save the user from having to redisplay it. Bigger thing: I've added the ability to save/load the layout of the ApolloFrame to a file. The motivation behind this was to make it easier to setup the display of multispecies synteny data. However I think it will have several other possible uses. The layout is saved using the 'Save window layout' item in the File menu and loaded using the 'Load window layout'. The following things are saved: - Size and location of ApolloFrame - Location and Orientation of splitpane divider between EvidencePanelContainer and SyntenyPanel - Location of splitpane divider in each EvidencePanel - Location of splitpane dividers in SyntenyPanel - For each StrandedZoomableApolloPanel - control panel and nav bar visibility - Location of splitter view dividers - Forward strand visibility - Reverse strand visibility - Results visibility - Annotation visibility - Scale visibility - Whether sites are shown when zoomed in - Whether edge matches are highlighted - Whether display is reverse complemented - Centre base * - Zoom factor * The base position specific data (*'d) is only applied if the 'Update base location' checkbox is ticked in the 'Load window layout' JFileChooser dialog. I've also added a Style variable 'LayoutIniFile' which specifies a file to use to set the window layout when a set using that style is loaded. Base position data is not loaded. One check that is done to make sure the layout data is compatible with the current displayed data is to check that the number of species is the same. The ini file also has a version number stored which is checked. If base position data is being loaded then the range of the current curation set is checked against the range that was present when the layout was saved and a warning given if they differ. Index: EvidencePanel.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/gui/evidencepanel/EvidencePanel.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** EvidencePanel.java 6 Jun 2006 13:29:55 -0000 1.21 --- EvidencePanel.java 31 Aug 2007 09:36:01 -0000 1.22 *************** *** 23,26 **** --- 23,28 ---- import apollo.gui.UnBorderedSplitPane; + import misc.JIniFile; + /** * A panel containing a table of selected result feature sets. *************** *** 238,307 **** } ! } ! // not used ! // public EvidencePanel.ApolloFeatureSelectionListener getFeatureSelectionListener(){ ! // return featureSelectionListener; ! // }//end getFeatureSelectionListener ! ! ! // garbage - delete ! // /** Returns FeatureList of feature sets - filters out codons & accep/dons */ ! // private FeatureList getFeatureSets(FeatureList features) { ! // //Vector sets = new Vector(); ! // FeatureList sets = new FeatureList(true); // true -> unique check ! // for (int i=0; i < features.size() ;i++) { ! // SeqFeatureI sf = features.getFeature(i); ! // // deal with the real thing, not the drawables ! // // boolean drawn = false; ! // // // i dont think this isnt possible anymore, selection has model not drawable ! // // if (sf instanceof Drawable) { ! // // // System.out.println ("Converting drawable " + sf.getName()); ! // // if (sf.getParent() != null) ! // // drawn = ((Drawable) sf.getParent()).isDrawn(); ! // // sf = ((Drawable) sf).getFeature(); ! // // } ! // // skip codons - nothing to display - ! // // codons no longer part of FeatureSet ! // // with new SiteView optimization ! // //if (!isCodon(sf)) { ! // if (!displayInEvidencePanel(sf)) ! // continue; // skip codons acceptors and donors (pase?) ! // // getRefFeature does not work if its a gene as the ref feature ! // // is the AnnotatedFeature of all the genes in that strand ! // // which is not what you want to see in the set detail panel. ! // // If ref set has no type ! // // (its a typeless holder not meant to be shown in ! // // evidence panel) ! // // then use the sf itself, which should be a FeatureSetI. ! // // This is true of selecting a Gene. ! // // Actually it should only get the the ref feature if it is not ! // // a feature set, not just for typeless parents, as the same problem ! // // occurs for result feature sets. ! // SeqFeatureI set=null;//FeatureSetI set=null; ! // if (sf.canHaveChildren()) // hasKids()? ! // set = sf; ! // // Non gene types may be flat with no feat set... ! // // set detail panel should either be cleared or handle non FSets? ! // // else if (drawn) ! // // sets.addElement(sf); ! // else ! // set = sf.getRefFeature(); ! // if (set == null) // is this even possible? ! // continue; ! // // if (set != null) { ! // // if ( ! (sf.getFeatureType().equals("donor") || ! // // sf.getFeatureType().equals("acceptor") ) ) { ! // // if ( ! (sets.contains(set)) ) { // FeatList checks this ! // // if (i == sets.size()) { ! // // // only call setFeatureSet with LAST set ! // // // this will populate the detail table ! // // setDetailPanel.setFeatureSet (set); // move this awkward side effect ! // // } ! // sets.addFeature(set); ! // // } ! // // } ! // // } ! // } ! // return sets; ! // } --- 240,254 ---- } ! public void saveLayout(JIniFile iniFile, String section) { ! iniFile.writeInteger(section, "split_position", split.getDividerLocation()); ! } ! public void applyLayout(JIniFile iniFile, String section, boolean updateBaseLocation) { ! int splitPos = iniFile.readInteger(section, "split_position", split.getDividerLocation()); ! split.validate(); ! split.setDividerLocation(splitPos); ! ! // Stop the first paint stuff happening if we're deliberately applying a layout ! firstPaint = false; ! } ! } Index: EvidencePanelContainer.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/gui/evidencepanel/EvidencePanelContainer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EvidencePanelContainer.java 9 Aug 2004 15:31:11 -0000 1.4 --- EvidencePanelContainer.java 31 Aug 2007 09:36:01 -0000 1.5 *************** *** 7,10 **** --- 7,12 ---- import javax.swing.JSplitPane; + import misc.JIniFile; + import apollo.gui.Orientations; *************** *** 85,88 **** --- 87,104 ---- } } + + public void saveLayout(JIniFile iniFile) { + for(int i=0; i< getEvidencePanels().size(); i++){ + String section = "EvidencePanel" + i; + getEvidencePanel(i).saveLayout(iniFile,section); + } + } + + public void applyLayout(JIniFile iniFile, boolean updateBaseLocation) { + for(int i=0; i< getEvidencePanels().size(); i++){ + String section = "EvidencePanel" + i; + getEvidencePanel(i).applyLayout(iniFile, section, updateBaseLocation); + } + } } Index: EvidencePanelOrientationManager.java =================================================================== RCS file: /cvsroot/gmod/apollo/src/java/apollo/gui/evidencepanel/EvidencePanelOrientationManager.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** EvidencePanelOrientationManager.java 9 Aug 2004 20:59:42 -0000 1.6 --- EvidencePanelOrientationManager.java 31 Aug 2007 09:36:01 -0000 1.7 *************** *** 67,70 **** --- 67,75 ---- } + public void orientEvidencePanels(String orientString) { + setOrientationFromString(orientString); + orientEvidencePanels(); + } + /** For Orientation change or initialization - redo layout */ public void orientEvidencePanels() { |