SequenceGroup selectionGroup;\r
int charHeight;\r
int charWidth;\r
+ boolean validCharWidth;\r
int wrappedWidth;\r
- Font font = new Font("SansSerif", Font.PLAIN, 10);\r
+ Font font;\r
AlignmentI alignment;\r
ColumnSelection colSel = new ColumnSelection();\r
int threshold;\r
showQuality = Cache.getDefault("SHOW_QUALITY", true);\r
showIdentity = Cache.getDefault("SHOW_IDENTITY", true);\r
\r
+ autoCalculateConsensus = Cache.getDefault("AUTO_CALC_CONSENSUS", true);\r
+\r
+ padGaps = Cache.getDefault("PAD_GAPS", false);\r
+\r
String fontName = Cache.getDefault("FONT_NAME", "SansSerif");\r
String fontStyle = Cache.getDefault("FONT_STYLE", Font.PLAIN + "") ;\r
String fontSize = Cache.getDefault("FONT_SIZE", "10");\r
}\r
catch (OutOfMemoryError error)\r
{\r
- javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
- "Out of memory calculating conservation!!"\r
- +\r
- "\nSee help files for increasing Java Virtual Machine memory."\r
- , "Out of memory",\r
- javax.swing.JOptionPane.WARNING_MESSAGE);\r
+ javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
+ "Out of memory calculating conservation!!"\r
+ +\r
+ "\nSee help files for increasing Java Virtual Machine memory."\r
+ , "Out of memory",\r
+ javax.swing.JOptionPane.WARNING_MESSAGE);\r
+ }\r
+ });\r
+\r
System.out.println("Conservation calculation: " + error);\r
System.gc();\r
\r
\r
}catch(OutOfMemoryError error)\r
{\r
- javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
- "Out of memory calculating consensus!!"\r
- +\r
- "\nSee help files for increasing Java Virtual Machine memory."\r
- , "Out of memory",\r
- javax.swing.JOptionPane.WARNING_MESSAGE);\r
+ javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
+ "Out of memory calc45ulating consensus!!"\r
+ +\r
+ "\nSee help files for increasing Java Virtual Machine memory."\r
+ , "Out of memory",\r
+ javax.swing.JOptionPane.WARNING_MESSAGE);\r
+ }\r
+ });\r
+\r
+\r
System.out.println("Consensus calculation: " + error);\r
System.gc();\r
}\r
java.awt.FontMetrics fm = c.getFontMetrics(font);\r
setCharHeight(fm.getHeight());\r
setCharWidth(fm.charWidth('M'));\r
+ validCharWidth = true;\r
}\r
\r
/**\r
hasHiddenRows = false;\r
}\r
\r
+ public void showAllHiddenSeqs()\r
+ {\r
+ alignment.getHiddenSequences().showAll();\r
+ hasHiddenRows = false;\r
+ }\r
+\r
public int adjustForHiddenSeqs(int alignmentIndex)\r
{\r
return alignment.getHiddenSequences().adjustForHiddenSeqs(alignmentIndex);\r
}\r
+\r
+ /**\r
+ * This method returns the a new SequenceI [] with\r
+ * the selection sequence and start and end points adjusted\r
+ * @return String[]\r
+ */\r
+ public SequenceI[] getSelectionAsNewSequence()\r
+ {\r
+ SequenceI[] sequences;\r
+\r
+ if (selectionGroup == null)\r
+ sequences = alignment.getSequencesArray();\r
+ else\r
+ sequences = selectionGroup.getSelectionAsNewSequences(alignment);\r
+\r
+ return sequences;\r
+ }\r
+\r
+\r
+ /**\r
+ * This method returns the visible selected area as text, as\r
+ * seen on the GUI, ie if columns are hidden they will not\r
+ * be returned in the result.\r
+ * Use this for calculating trees, PCA, redundancy etc on views\r
+ * which contain hidden columns.\r
+ * @return String[]\r
+ */\r
+ public String [] getSelectionAsString()\r
+ {\r
+ String [] selection = null;\r
+ SequenceI [] seqs= null;\r
+ int i, iSize;\r
+ int start = 0, end = 0;\r
+ if(selectionGroup!=null)\r
+ {\r
+ iSize = selectionGroup.getSize(false);\r
+ seqs = selectionGroup.getSequencesInOrder(alignment);\r
+ start = selectionGroup.getStartRes();\r
+ end = selectionGroup.getEndRes()+1;\r
+ }\r
+ else\r
+ {\r
+ iSize = alignment.getHeight();\r
+ seqs = alignment.getSequencesArray();\r
+ end = alignment.getWidth();\r
+ }\r
+\r
+ selection = new String[iSize];\r
+\r
+\r
+ for(i=0; i<iSize; i++)\r
+ {\r
+ if (hasHiddenColumns)\r
+ {\r
+ StringBuffer visibleSeq = new StringBuffer();\r
+ Vector regions = colSel.getHiddenColumns();\r
+\r
+ int blockStart = start, blockEnd=end;\r
+ int [] region;\r
+ int hideStart, hideEnd;\r
+\r
+ for (int j = 0; j < regions.size(); j++)\r
+ {\r
+ region = (int[]) regions.elementAt(j);\r
+ hideStart = region[0];\r
+ hideEnd = region[1];\r
+\r
+ if(hideStart < start)\r
+ {\r
+ continue;\r
+ }\r
+\r
+ blockStart = Math.min(blockStart, hideEnd+1);\r
+ blockEnd = Math.min(blockEnd, hideStart);\r
+\r
+ if(blockStart>blockEnd)\r
+ {\r
+ break;\r
+ }\r
+\r
+\r
+ visibleSeq.append(seqs[i].getSequence(blockStart, blockEnd));\r
+\r
+ blockStart = hideEnd+1;\r
+ blockEnd = end;\r
+ }\r
+\r
+ if(end>blockStart)\r
+ visibleSeq.append(seqs[i].getSequence(blockStart, end));\r
+\r
+ selection[i] = visibleSeq.toString();\r
+ }\r
+ else\r
+ {\r
+ selection[i] = seqs[i].getSequence(start, end);\r
+ }\r
+\r
+ // System.out.println(seqs[i].getName()+"\t"+ selection[i]);\r
+ }\r
+\r
+ return selection;\r
+ }\r
}\r