+++ /dev/null
-/*
- * 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.views;
-
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.filechooser.FileFilter;
-
-import fr.orsay.lri.varna.VARNAPanel;
-import fr.orsay.lri.varna.components.AnnotationTableModel;
-import fr.orsay.lri.varna.controlers.ControleurTableAnnotations;
-import fr.orsay.lri.varna.models.annotations.TextAnnotation;
-import fr.orsay.lri.varna.models.rna.ModeleColorMap;
-
-/**
- * a view for all annoted texts on the VARNAPanel
- *
- * @author Darty@lri.fr
- *
- */
-public class VueListeAnnotations extends JPanel {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * if this view is for removing annoted texts
- */
- public static final int REMOVE = 0;
- /**
- * if this view is for editing annoted texts
- */
- public static final int EDIT = 1;
-
- private VARNAPanel _vp;
- private ArrayList<Object> data;
- private JTable table;
- private int type;
- private AnnotationTableModel specialTableModel;
- // BH SwingJS - this is never used in JavaScript
- private static JFileChooser fc = new JFileChooser(){
- public void approveSelection(){
- File f = getSelectedFile();
- if(f.exists() && getDialogType() == SAVE_DIALOG){
- int result = JOptionPane.showConfirmDialog(this,"The file exists, overwrite?","Existing file",JOptionPane.YES_NO_OPTION);
- switch(result){
- case JOptionPane.YES_OPTION:
- super.approveSelection();
- return;
- case JOptionPane.NO_OPTION:
- return;
- case JOptionPane.CLOSED_OPTION:
- return;
- case JOptionPane.CANCEL_OPTION:
- cancelSelection();
- return;
- }
- }
- super.approveSelection();
- }
- };
-
-
- /**
- * creates the view
- *
- * @param vp
- * @param type
- * (REMOVE or EDIT)
- */
- public VueListeAnnotations(VARNAPanel vp, int type) {
- super(new BorderLayout());
- this.type = type;
- _vp = vp;
- data = new ArrayList<Object>();
- data.addAll(_vp.getListeAnnotations());
- data.addAll(_vp.getRNA().getHighlightRegion());
- data.addAll(_vp.getRNA().getChemProbAnnotations());
- createView();
- }
-
- private void createView() {
- specialTableModel = new AnnotationTableModel(data);
- table = new JTable(specialTableModel);
- ControleurTableAnnotations ctrl = new ControleurTableAnnotations(table,
- _vp, type);
- table.addMouseListener(ctrl);
- table.addMouseMotionListener(ctrl);
- // table.setPreferredScrollableViewportSize(new Dimension(500, 100));
- // TODO: Find equivalent in JRE 1.5
- // table.setFillsViewportHeight(true);
- // Create the scroll pane and add the table to it.
- JScrollPane scrollPane = new JScrollPane(table);
-
- add(scrollPane, BorderLayout.CENTER);
-
- FileFilter CPAFiles = new FileFilter(){
- public boolean accept(File f) {
- return f.getName().toLowerCase().endsWith(".cpa") || f.isDirectory();
- }
-
- public String getDescription() {
- return "Chemical Probing Annotations (*.cpa) Files";
- }
-
- };
- fc.addChoosableFileFilter(CPAFiles);
- fc.setFileFilter(CPAFiles);
-
-
- JButton loadStyleButton = new JButton("Load");
- loadStyleButton.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e) {
- if (fc.showOpenDialog(VueListeAnnotations.this)==JFileChooser.APPROVE_OPTION)
- {
- File file = fc.getSelectedFile();
- try {
- BufferedReader br = new BufferedReader(new FileReader(file));
- String s = br.readLine();
- while(s != null)
- {
- if (s.startsWith(TextAnnotation.HEADER_TEXT))
- s = br.readLine();
- }
- // TODO
- } catch (FileNotFoundException e1) {
- e1.printStackTrace();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
-
- });
- JButton saveStyleButton = new JButton("Save");
- saveStyleButton.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e) {
- if (fc.showSaveDialog(VueListeAnnotations.this)==JFileChooser.APPROVE_OPTION)
- {
- try {
- PrintWriter out = new PrintWriter(fc.getSelectedFile());
- // TODO out.println(_gp.getColorMap().getParamEncoding());
- out.close();
- } catch (FileNotFoundException e1) {
- e1.printStackTrace();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
-
- });
- saveStyleButton.setAlignmentX(CENTER_ALIGNMENT);
- loadStyleButton.setAlignmentX(CENTER_ALIGNMENT);
-
- JPanel jp2 = new JPanel();
- BoxLayout bl = new BoxLayout(jp2, BoxLayout.X_AXIS);
- jp2.setLayout(bl);
- jp2.setAlignmentX(CENTER_ALIGNMENT);
- jp2.add(loadStyleButton);
- jp2.add(Box.createRigidArea(new Dimension(5,0)));
- jp2.add(saveStyleButton);
- this.add(jp2,BorderLayout.SOUTH);
-
-
-
- UIvueListeAnnotations();
- }
-
- /**
- * Create the GUI and show it. For thread safety, this method should be
- * invoked from the event-dispatching thread.
- */
- public void UIvueListeAnnotations() {
- JComponent newContentPane = this;
- newContentPane.setOpaque(true);
- JOptionPane.showMessageDialog(_vp, newContentPane,
- "Annotation edition", JOptionPane.PLAIN_MESSAGE);
- }
-
- public ArrayList<Object> getData() {
- return data;
- }
-
- public void setData(ArrayList<Object> data) {
- this.data = data;
- }
-
- public VARNAPanel get_vp() {
- return _vp;
- }
-
- public JTable getTable() {
- return table;
- }
-
- public void setTable(JTable table) {
- this.table = table;
- }
-
- public AnnotationTableModel getSpecialTableModel() {
- return specialTableModel;
- }
-
- public void setSpecialTableModel(AnnotationTableModel specialTableModel) {
- this.specialTableModel = specialTableModel;
- }
-}