X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FnewGUI%2FVARNAGUI.java;fp=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FnewGUI%2FVARNAGUI.java;h=0000000000000000000000000000000000000000;hb=d27359893c99db0e749a59d8a7ab73ea751da09e;hp=26a733448d49830397e7e76720497a9ec220c6b8;hpb=9f55415c9f8005e9dcd8243453883ff853fd5b76;p=jalview.git diff --git a/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUI.java b/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUI.java deleted file mode 100644 index 26a7334..0000000 --- a/src2/fr/orsay/lri/varna/applications/newGUI/VARNAGUI.java +++ /dev/null @@ -1,750 +0,0 @@ -/* - VARNA is a tool for the automated drawing, visualization and annotation of the secondary structure of RNA, designed as a companion software for web servers and databases. - Copyright (C) 2008 Kevin Darty, Alain Denise and Yann Ponty. - electronic mail : Yann.Ponty@lri.fr - paper mail : LRI, bat 490 Université Paris-Sud 91405 Orsay Cedex France - - This file is part of VARNA version 3.1. - VARNA version 3.1 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License - as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - VARNA version 3.1 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with VARNA version 3.1. - If not, see http://www.gnu.org/licenses. - */ -package fr.orsay.lri.varna.applications.newGUI; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.datatransfer.UnsupportedFlavorException; -import java.awt.dnd.DropTarget; -import java.awt.dnd.DropTargetDragEvent; -import java.awt.dnd.DropTargetDropEvent; -import java.awt.dnd.DropTargetEvent; -import java.awt.dnd.DropTargetListener; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ComponentEvent; -import java.awt.event.ComponentListener; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.WindowEvent; -import java.awt.event.WindowListener; -import java.io.IOException; -import java.util.ArrayList; - -import javax.swing.BorderFactory; -import javax.swing.ButtonGroup; -import javax.swing.DefaultListSelectionModel; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JFileChooser; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JSplitPane; -import javax.swing.JTextPane; -import javax.swing.JToolBar; -import javax.swing.JTree; -import javax.swing.ListSelectionModel; -import javax.swing.TransferHandler; -import javax.swing.UIManager; -import javax.swing.UIManager.LookAndFeelInfo; -import javax.swing.event.TreeModelEvent; -import javax.swing.event.TreeModelListener; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.TreePath; -import javax.swing.tree.TreeSelectionModel; - -import fr.orsay.lri.varna.VARNAPanel; -import fr.orsay.lri.varna.applications.BasicINI; -import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength; - - -public class VARNAGUI extends JFrame implements TreeModelListener, MouseListener,DropTargetListener, WindowListener, ComponentListener, ActionListener { - - private enum Commands - { - NEW_FOLDER, - ADD_PANEL_UP, - ADD_PANEL_DOWN, - REMOVE_PANEL_UP, - REMOVE_PANEL_DOWN, - SORT_ID, - SORT_FILENAME, - REFRESH_ALL, - }; - - - /** - * - */ - private static final long serialVersionUID = -790155708306987257L; - - - - private String _INIFilename = "FragSeqUI.ini"; - private Color _backgroundColor = Color.white; - private boolean redrawOnSlide = false; - private int dividerWidth = 5; - - private JPanel _varnaUpperPanels = new JPanel(); - private JPanel _varnaLowerPanels = new JPanel(); - - private JPanel _listPanel = new JPanel(); - private JPanel _infoPanel = new JPanel(); - private VARNAGUITree _sideList = null; - - - private VARNAGUITreeModel _treeModel; - private JToolBar _toolbar = new JToolBar(); - private JFileChooser _choice = new JFileChooser(); - - private JScrollPane _listScroller; - - private JList _selectedElems; - private JSplitPane _splitLeft; - private JSplitPane _splitRight; - private JSplitPane _splitVARNA; - - - - public VARNAGUI() { - super("VARNA Explorer"); - RNAPanelDemoInit(); - } - - - private void RNAPanelDemoInit() - { - JFrame.setDefaultLookAndFeelDecorated(true); - this.addWindowListener(this); - - _selectedElems = new JList(); - - // Initializing Custom Tree Model - _treeModel = new VARNAGUITreeModel(); - _treeModel.addTreeModelListener(this); - - _sideList = new VARNAGUITree(_treeModel); - _sideList.addMouseListener(this); - _sideList.setLargeModel(true); - _sideList.setEditable(true); - VARNAGUIRenderer renderer = new VARNAGUIRenderer(_sideList,_treeModel); - //_sideList.setUI(new CustomTreeUI()); - _sideList.setCellRenderer(renderer); - _sideList.setCellEditor(new VARNAGUICellEditor(_sideList,renderer,_treeModel)); - TreeSelectionModel m = _sideList.getSelectionModel(); - m.setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); - _sideList.setSelectionModel(m); - _sideList.setShowsRootHandles(true); - _sideList.setDragEnabled(true); - _sideList.setRootVisible(false); - _sideList.setTransferHandler(new TransferHandler(null) - { - public int getSourceActions(JComponent c) { - return COPY_OR_MOVE; - } - protected Transferable createTransferable(JComponent c) { - JTree tree = (JTree) c; - TreePath tp =tree.getSelectionPath(); - if (tp!=null) - { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent(); - if (node.getUserObject() instanceof VARNAGUIModel) { - return new Transferable(){ - public DataFlavor[] getTransferDataFlavors() { - DataFlavor[] dt = {VARNAGUIModel.Flavor}; - return dt; - } - public Object getTransferData(DataFlavor df) - throws UnsupportedFlavorException, IOException { - if (!isDataFlavorSupported(df)) - throw new UnsupportedFlavorException(df); - DefaultMutableTreeNode node = (DefaultMutableTreeNode) _sideList.getSelectionPath().getLastPathComponent(); - return node.getUserObject(); - } - public boolean isDataFlavorSupported(DataFlavor df) { - return VARNAGUIModel.Flavor.equals(df); - } - }; - } else { - return null; - } - } - return null; - } - }); - - // Various buttons - JButton refreshAllFoldersButton = new JButton("Refresh All"); - refreshAllFoldersButton.setActionCommand(""+Commands.REFRESH_ALL); - refreshAllFoldersButton.addActionListener(this); - JButton watchFolderButton = new JButton("Add folder"); - watchFolderButton.setActionCommand("" +Commands.NEW_FOLDER); - watchFolderButton.addActionListener(this); - JButton addUpperButton = new JButton("+Up"); - addUpperButton.setActionCommand(""+Commands.ADD_PANEL_UP); - addUpperButton.addActionListener(this); - JButton removeUpperButton = new JButton("-Up"); - removeUpperButton.setActionCommand(""+Commands.REMOVE_PANEL_UP); - removeUpperButton.addActionListener(this); - JButton addLowerButton = new JButton("+Down"); - addLowerButton.setActionCommand(""+Commands.ADD_PANEL_DOWN); - addLowerButton.addActionListener(this); - JButton removeLowerButton = new JButton("-Down"); - removeLowerButton.setActionCommand(""+Commands.REMOVE_PANEL_DOWN); - removeLowerButton.addActionListener(this); - - _toolbar.setFloatable(false); - _toolbar.add(refreshAllFoldersButton); - _toolbar.addSeparator(); - _toolbar.add(addUpperButton); - _toolbar.add(removeUpperButton); - _toolbar.add(addLowerButton); - _toolbar.add(removeLowerButton); - - // Scroller for File tree - _listScroller = new JScrollPane(_sideList,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); - _listScroller.setPreferredSize(new Dimension(300, 200)); - _listScroller.addComponentListener(this); - - - _listPanel.setLayout(new BorderLayout()); - - _listPanel.add(_listScroller,BorderLayout.CENTER); - _listPanel.add(_selectedElems,BorderLayout.SOUTH); - _listPanel.setBorder(BorderFactory.createTitledBorder("Structures")); - _listPanel.setPreferredSize(new Dimension(300, 0)); - - _varnaUpperPanels.setLayout(new GridLayout()); - _varnaUpperPanels.setPreferredSize(new Dimension(800, 600)); - - _varnaLowerPanels.setLayout(new GridLayout()); - _varnaLowerPanels.setPreferredSize(new Dimension(800, 000)); - - JRadioButton sortFileName = new JRadioButton("Filename"); - sortFileName.setActionCommand("sortfilename"); - sortFileName.setSelected(true); - sortFileName.setOpaque(false); - sortFileName.setActionCommand(""+Commands.SORT_FILENAME); - sortFileName.addActionListener(this); - JRadioButton sortID = new JRadioButton("ID"); - sortID.setActionCommand("sortid"); - sortID.setOpaque(false); - sortID.setActionCommand(""+Commands.SORT_ID); - sortID.addActionListener(this); - - ButtonGroup group = new ButtonGroup(); - group.add(sortFileName); - group.add(sortID); - - JToolBar listTools = new JToolBar(); - listTools.setFloatable(false); - listTools.add(watchFolderButton); - listTools.addSeparator(); - listTools.add(new JLabel("Sort by")); - listTools.add(sortFileName); - listTools.add(sortID); - - JPanel sidePanel = new JPanel(); - sidePanel.setLayout(new BorderLayout()); - sidePanel.add(listTools,BorderLayout.NORTH); - sidePanel.add(_listPanel,BorderLayout.CENTER); - - - JPanel mainVARNAPanel = new JPanel(); - mainVARNAPanel.setLayout(new BorderLayout()); - _splitVARNA = new JSplitPane(JSplitPane.VERTICAL_SPLIT,redrawOnSlide,_varnaUpperPanels,_varnaLowerPanels); - _splitVARNA.setDividerSize(dividerWidth); - _splitVARNA.setResizeWeight(1.0); - _splitLeft = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,redrawOnSlide,sidePanel,_splitVARNA); - _splitLeft.setResizeWeight(0.1); - _splitLeft.setDividerSize(dividerWidth); - _splitRight = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,redrawOnSlide,_splitLeft,_infoPanel); - _splitRight.setResizeWeight(0.85); - _splitRight.setDividerSize(dividerWidth); - - _infoPanel.setLayout(new GridLayout(0,1)); - - this.restoreConfig(); - this.setBackground(_backgroundColor); - this.getContentPane().setLayout(new BorderLayout()); - this.getContentPane().add(_splitRight, BorderLayout.CENTER); - this.getContentPane().add(_toolbar, BorderLayout.NORTH); - addUpperPanel(); - this.setVisible(true); - } - - public VARNAGUI getSelf() - { - return this; - } - - public VARNAHolder createIntegratedPanel(int height) - { - VARNAHolder vh = new VARNAHolder(this); - _varnaPanels.add(vh); - return vh; - } - - - public void removeUpperPanel() - { - if (_varnaUpperPanels.getComponentCount()>1) - { - VARNAHolder vh = (VARNAHolder) _varnaUpperPanels.getComponent(_varnaUpperPanels.getComponentCount()-1); - _infoPanel.remove(vh.getInfoPane()); - _varnaUpperPanels.remove(vh); - _splitLeft.validate(); - _splitRight.validate(); - } - } - - public void addUpperPanel() - { - VARNAHolder vh = createIntegratedPanel(100); - _varnaUpperPanels.add(vh); - _infoPanel.add(vh.getInfoPane()); - _splitRight.validate(); - _splitLeft.validate(); - } - - - public void removeLowerPanel() - { - if (_varnaLowerPanels.getComponentCount()>0) - { - _varnaLowerPanels.remove(_varnaLowerPanels.getComponentCount()-1); - if (_varnaLowerPanels.getComponentCount()==0) - { - _splitVARNA.setDividerLocation(1.0); - _splitVARNA.validate(); - _splitVARNA.repaint(); - } - _splitLeft.validate(); - } - } - - public void addLowerPanel() - { - if (_varnaLowerPanels.getComponentCount()==0) - { - _splitVARNA.setDividerLocation(0.7); - _splitVARNA.validate(); - } - _varnaLowerPanels.add(createIntegratedPanel(400)); - _splitLeft.validate(); - } - - public static void main(String[] args) { - try { - for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { - if ("Nimbus".equals(info.getName())) { - UIManager.setLookAndFeel(info.getClassName()); - break; - } - } - } catch (Exception e) { - // If Nimbus is not available, you can set the GUI to another look and feel. - } - VARNAGUI d = new VARNAGUI(); - d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - d.pack(); - d.setVisible(true); - } - - public void treeNodesChanged(TreeModelEvent e) { - DefaultMutableTreeNode node; - node = (DefaultMutableTreeNode) - (e.getTreePath().getLastPathComponent()); - - /* - * If the event lists children, then the changed - * node is the child of the node we have already - * gotten. Otherwise, the changed node and the - * specified node are the same. - */ - try { - int index = e.getChildIndices()[0]; - node = (DefaultMutableTreeNode) - (node.getChildAt(index)); - } catch (NullPointerException exc) {} - - } - - - - - public void addFolder(String path) { - addFolder( path, true); - } - - public void addFolder(String path, - boolean shouldBeVisible) - { - DefaultMutableTreeNode childNode = _treeModel.addFolder(path); - - if ((childNode!=null) && shouldBeVisible ) { - System.out.println(" Expanding: "+childNode.getUserObject()); - TreePath tp = new TreePath(childNode.getPath()); - _sideList.scrollPathToVisible(tp); - _sideList.expandRow(_sideList.getRowForPath(tp)); - _sideList.updateUI(); - _sideList.validate(); - } - } - - public void treeNodesInserted(TreeModelEvent e) { - System.out.println(e); - - } - - public void treeNodesRemoved(TreeModelEvent e) { - // TODO Auto-generated method stub - - } - - public void treeStructureChanged(TreeModelEvent e) { - // TODO Auto-generated method stub - - } - - public void mouseClicked(MouseEvent e) { - // TODO Auto-generated method stub - - } - - public void mousePressed(MouseEvent e) { - - } - - int index = 0; - - public void mouseReleased(MouseEvent e) { - // TODO Auto-generated method stub - if (e.getSource() == this._sideList) - { - if (e.getClickCount() == 2) - { - TreePath t = _sideList.getSelectionPath(); - if (t!= null) - { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) t.getLastPathComponent(); - if (node.getUserObject() instanceof VARNAGUIModel) - { - VARNAGUIModel model = (VARNAGUIModel) node.getUserObject(); - int res = index % (_varnaUpperPanels.getComponentCount()+_varnaLowerPanels.getComponentCount()); - Component c = null; - if (res<_varnaUpperPanels.getComponentCount()) - { - c = (VARNAHolder)_varnaUpperPanels.getComponent(res); - } - else - { - res -= _varnaUpperPanels.getComponentCount(); - c = (VARNAHolder)_varnaLowerPanels.getComponent(res); - } - if (c instanceof VARNAHolder) - { - VARNAHolder h = (VARNAHolder) c; - h.setModel(model); - } - index ++; - } - } - } - } - } - - - - - class VARNAHolder extends JPanel - { - VARNAPanel vp; - VARNAGUIModel _m; - JPanel _infoPanel; - JTextPane _infoTxt; - public VARNAHolder(DropTargetListener f) - { - super(); - vp = new VARNAPanel(); - vp.addFocusListener(new FocusListener(){ - public void focusGained(FocusEvent e) { - //focus(_m); - } - public void focusLost(FocusEvent e) { - }}); - vp.setPreferredSize(new Dimension(800, 400)); - vp.setBackground(_backgroundColor); - - _infoTxt = new JTextPane(); - _infoTxt.setPreferredSize(new Dimension(200,0)); - _infoTxt.setContentType("text/html"); - - JScrollPane scroll = new JScrollPane(_infoTxt,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); - - _infoPanel = new JPanel(); - _infoPanel.setLayout(new BorderLayout()); - _infoPanel.setPreferredSize(new Dimension(200,0)); - _infoPanel.setBorder(BorderFactory.createTitledBorder("Info")); - _infoPanel.add(scroll,BorderLayout.CENTER); - _infoPanel.validate(); - - this.setLayout(new BorderLayout()); - this.setPreferredSize(new Dimension(300,600)); - this.setBorder(BorderFactory.createTitledBorder("None")); - this.add(vp, BorderLayout.CENTER); - - DropTarget dt = new DropTarget(vp, f); - } - - VARNAPanel getVARNAPanel() - { - return vp; - } - void setModel(VARNAGUIModel m) - { - _m = m; - vp.showRNAInterpolated(m.getRNA()); - setBorder(BorderFactory.createTitledBorder(m.toString())); - _infoTxt.setText(m.getRNA().getHTMLDescription()); - _infoPanel.setBorder(BorderFactory.createTitledBorder("Info ("+_m+")")); - vp.requestFocus(); - } - VARNAGUIModel getModel() - { - setBorder(BorderFactory.createTitledBorder(_m.toString())); - return _m; - } - public void setInfoTxt(String s) - { - _infoTxt.setText(vp.getRNA().getHTMLDescription()); - _infoTxt.validate(); - } - public JPanel getInfoPane() - { - return _infoPanel; - } - - } - - - private ArrayList _varnaPanels = new ArrayList(); - - private VARNAHolder getHolder(Component vp) - { - if (vp instanceof VARNAHolder) - { - int i= _varnaPanels.indexOf(vp); - if (i!=-1) - { - return _varnaPanels.get(i); - } - } - if (vp instanceof VARNAPanel) - { - for (VARNAHolder vh: _varnaPanels) - { - if (vh.getVARNAPanel()==vp) - return vh; - } - } - return null; - } - - - - public void mouseEntered(MouseEvent e) { - // TODO Auto-generated method stub - - } - - public void mouseExited(MouseEvent e) { - // TODO Auto-generated method stub - - } - - public void dragEnter(DropTargetDragEvent arg0) { - // TODO Auto-generated method stub - - } - - public void dragExit(DropTargetEvent arg0) { - // TODO Auto-generated method stub - - } - - public void dragOver(DropTargetDragEvent arg0) { - - } - - public void drop(DropTargetDropEvent arg0) { - try { - - DropTarget o = (DropTarget)arg0.getSource(); - if (o.getComponent() instanceof VARNAPanel) - { - VARNAHolder h = getHolder(o.getComponent()); - if (h!=null) - { - h.setModel((VARNAGUIModel) arg0.getTransferable().getTransferData(VARNAGUIModel.Flavor)); - } - } - } catch (UnsupportedFlavorException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public void dropActionChanged(DropTargetDragEvent arg0) { - // TODO Auto-generated method stub - - } - - public void windowOpened(WindowEvent e) { - // TODO Auto-generated method stub - - } - - public void windowClosing(WindowEvent e) { - saveConfig(); - System.exit(0); - } - - public void windowClosed(WindowEvent e) { - // TODO Auto-generated method stub - - } - - public void windowIconified(WindowEvent e) { - // TODO Auto-generated method stub - - } - - public void windowDeiconified(WindowEvent e) { - // TODO Auto-generated method stub - - } - - public void windowActivated(WindowEvent e) { - // TODO Auto-generated method stub - - } - - public void windowDeactivated(WindowEvent e) { - // TODO Auto-generated method stub - - } - - private void restoreConfig() - { - BasicINI config = BasicINI.loadINI(_INIFilename); - ArrayList vals = config.getItemList("folders"); - System.out.print("[C]"+vals); - - for(String path:vals) - { - System.out.println("Loading folder "+path); - addFolder(path); - } - _sideList.validate(); - _listScroller.validate(); - } - - private void saveConfig() - { - BasicINI data = new BasicINI(); - int i=0; - for (String folderPath: _treeModel.getFolders()) - { - data.addItem("folders", "val"+i, folderPath); - i++; - } - BasicINI.saveINI(data, _INIFilename); - } - - - public void componentResized(ComponentEvent e) { - _sideList.validate(); - } - - - public void componentMoved(ComponentEvent e) { - // TODO Auto-generated method stub - - } - - - public void componentShown(ComponentEvent e) { - // TODO Auto-generated method stub - - } - - - public void componentHidden(ComponentEvent e) { - // TODO Auto-generated method stub - - } - - - public void actionPerformed(ActionEvent e) { - String cmd = e.getActionCommand(); - System.out.println(cmd); - if (cmd.equals(""+Commands.NEW_FOLDER)) - { - _choice.setDialogTitle("Watch new folder..."); - _choice.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - _choice.setAcceptAllFileFilterUsed(false); - try { - if (_choice.showOpenDialog(getSelf()) == JFileChooser.APPROVE_OPTION) { - addFolder(_choice.getSelectedFile().getCanonicalPath()); - } - else { - System.out.println("No Selection "); - } - } catch (IOException e1) { - e1.printStackTrace(); - } - } - else if (cmd.equals(""+Commands.ADD_PANEL_DOWN)) - { - addLowerPanel(); - } - else if (cmd.equals(""+Commands.ADD_PANEL_UP)) - { - addUpperPanel(); - } - else if (cmd.equals(""+Commands.REMOVE_PANEL_DOWN)) - { - removeLowerPanel(); - } - else if (cmd.equals(""+Commands.REMOVE_PANEL_UP)) - { - removeUpperPanel(); - } - else - { - JOptionPane.showMessageDialog(this, "Command '"+cmd+"' not implemented yet."); - } - } -} -