package contextViewer; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import inicial.Parametres_Inicials; import genomeObjects.CSDisplayData; import genomeObjects.ExtendedCRON; import genomeObjects.OrganismSet; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import moduls.frm.ContextLeaf; import moduls.frm.FrmPrincipalDesk; public class mainFrame extends JFrame implements ComponentListener{ //fields //serial ID private static final long serialVersionUID = 1L; //content panels private OptionPanel op; private RenderedGenomesPanel rgp; private Dimension dim; private int ScrollPaneInset = 15; private JScrollPane scrollPane1; //directional panels private JPanel pan_South, pan_North; //information private CSDisplayData CSD; //private final CSDisplayData OriginalCSD; // public CSDisplayData getOriginalCSD() { // return OriginalCSD; // } private OrganismSet OS; private FrmPrincipalDesk fr; //constructor: include all biological information public mainFrame(CSDisplayData csd, OrganismSet os, String title, FrmPrincipalDesk fr){ //INITIALIZATIONS super(title); this.CSD = csd; //this.OriginalCSD = csd; this.OS = os; this.setFr(fr); this.addComponentListener(this); //RETRIEVE SYSTEM INFO Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize(); dim = new Dimension(); double Scale = 0.85; dim.setSize(pantalla.getWidth()*(Scale-0.15),pantalla.getHeight()*Scale); if (dim.getWidth() < 800){ dim.setSize(800.0,dim.getHeight()); } //CONTENT PANELS op = new OptionPanel(this); rgp = new RenderedGenomesPanel(this); //DIRECTIONAL PANELS pan_South = new JPanel(); pan_South.setLayout(new BorderLayout()); pan_South.add(op); pan_North = new JPanel(); scrollPane1 = new JScrollPane(rgp); Dimension spdim = new Dimension(); //spdim.setSize(dim.getWidth()-ScrollPaneInset, (dim.getHeight() - op.getOpdim().getHeight())-ScrollPaneInset); spdim.setSize(dim.getWidth()-(ScrollPaneInset*2), (dim.getHeight() - op.getOpdim().getHeight())-4*ScrollPaneInset); scrollPane1.setPreferredSize(spdim); scrollPane1.getVerticalScrollBar().setUnitIncrement(10); //scrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); pan_North.add(scrollPane1, BorderLayout.CENTER); //SET PROPERTIES OF DESKTOP FRAME JFrame.setDefaultLookAndFeelDecorated(false); this.setSize(dim); this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.setLocationRelativeTo(null); this.setResizable(true); this.add(pan_South, BorderLayout.SOUTH); this.add(pan_North, BorderLayout.NORTH); //CUSTOM CLOSE OPERATION - CLOSE SUB FRAMES WindowListener closeSubFrames = new WindowAdapter(){ public void windowClosing(WindowEvent e){ //dispose all sub-windows if (rgp.getGeneInfo() != null){ rgp.getGeneInfo().dispose(); } if (rgp.getGclf() != null){ rgp.getGclf().dispose(); } e.getWindow().dispose(); } }; this.addWindowListener(closeSubFrames); //The main frame CSD should not be altered. //this.fr.getCurrentFrame().getInternalFrameData().getQD().setCSD(OriginalCSD); //update with removed information, if necessary if (rgp.getSplitContexts().size() > 0){ for (String s : rgp.getSplitContexts().keySet()){ fr.getCurrentFrame().getInternalFrameData().getQD().getCSD().getEC().getContexts().put(s, rgp.getSplitContexts().get(s)); fr.getCurrentFrame().getInternalFrameData().getQD().getCSD().getEC().getSourceSpeciesNames().put(s, rgp.getSplitSpeciesNames().get(s)); fr.getCurrentFrame().getInternalFrameData().getQD().getCSD().getEC().getSourceContigNames().put(s, rgp.getSplitContigNames().get(s)); } } // //debugging // System.out.println("Main frame, before viewing"); // for (ContextLeaf CL : fr.getCurrentFrame().getInternalFrameData().getQD().getCSD().getGraphicalContexts()){ // System.out.println(CL.getName() + " " +fr.getCurrentFrame().getInternalFrameData().getQD().getCSD().getEC().getContexts().get(CL.getName())); // } //ghetto work-around? if (!fr.isRenderGenomesWorkerCancelled()){ this.setVisible(true); } else { //instead of displaying, just dispose of these computations. this.dispose(); //re-set for next search. fr.setRenderGenomesWorkerCancelled(false); } } public CSDisplayData getCSD() { return CSD; } public void setCSD(CSDisplayData cSD) { CSD = cSD; } public OrganismSet getOS() { return OS; } public void setOS(OrganismSet oS) { OS = oS; } public Dimension getDim() { return dim; } public void setDim(Dimension dim) { this.dim = dim; } public RenderedGenomesPanel getRgp() { return rgp; } public void setRgp(RenderedGenomesPanel rgp) { this.rgp = rgp; } public OptionPanel getOp() { return op; } public void setOp(OptionPanel op) { this.op = op; } @Override public void componentHidden(ComponentEvent arg0) { // TODO Auto-generated method stub } @Override public void componentMoved(ComponentEvent arg0) { // TODO Auto-generated method stub } @Override public void componentResized(ComponentEvent arg0) { this.scrollPane1.setPreferredSize(new Dimension((int) this.getWidth()-(ScrollPaneInset*2), (int)(this.getSize().getHeight() - op.getOpdim().getHeight())-4*ScrollPaneInset)); this.repaint(); // SwingUtilities.updateComponentTreeUI(getRootPane()); } @Override public void componentShown(ComponentEvent arg0) { // TODO Auto-generated method stub } public FrmPrincipalDesk getFr() { return fr; } public void setFr(FrmPrincipalDesk fr) { this.fr = fr; } }