-/*
- 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.Color;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-
-import javax.swing.BorderFactory;
-import javax.swing.JPanel;
-import javax.swing.JTextArea;
-import javax.swing.Timer;
-
-import fr.orsay.lri.varna.VARNAPanel;
-import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength;
-import fr.orsay.lri.varna.models.VARNAConfig;
-
-/**
- * BH j2s SwingJS replaces thread with simple javax.swing.Timer
- *
- */
-public class VueAboutPanel extends JPanel {
-
- /**
- *
- */
- private static final long serialVersionUID = 4525998278180950602L;
-
- private AboutAnimator _anim;
- private JPanel _textPanel;
- private JTextArea _textArea;
-
- public VueAboutPanel() {
- init();
- }
-
- private void init() {
- try {
- setBorder(BorderFactory.createEtchedBorder());
- setLayout(new BorderLayout());
- setBackground(Color.WHITE);
-
- String message = "VARNA "
- + VARNAConfig.MAJOR_VERSION
- + "."
- + VARNAConfig.MINOR_VERSION
- + "\n"
- + "\n"
- + "Created by: Kevin Darty, Alain Denise and Yann Ponty\n"
- + "Contact: ponty@lri.fr\n"
- + "\n"
- + "VARNA is freely distributed under the terms of the GNU GPL 3.0 license.\n"
- + "\n"
- + "Supported by the BRASERO project (ANR-06-BLAN-0045)\n";
-
- _textArea = new JTextArea();
- _textArea.setText(message);
- _textArea.setEditable(false);
-
- _textPanel = new JPanel();
- _textPanel.setBackground(Color.WHITE);
- _textPanel.setLayout(new BorderLayout());
- _textPanel.setBorder(BorderFactory.createMatteBorder(0, 15, 0, 15,
- getBackground()));
- _textPanel.add(_textArea);
-
- VARNAPanel vp = new VARNAPanel("GGGGAAAACCCC", "((((....))))");
- vp.setModifiable(false);
- vp.setPreferredSize(new Dimension(100, 100));
- // vp.setBorder(BorderFactory.createLineBorder(Color.gray));
-
- _anim = new AboutAnimator(vp);
- _anim
- .addRNA("GGGGAAGGGGAAAACCCCAACCCC",
- "((((..((((....))))..))))");
- _anim.addRNA("GGGGAAGGGGAAGGGGAAAACCCCAACCCCAACCCC",
- "((((..((((..((((....))))..))))..))))");
- _anim
- .addRNA(
- "GGGGAGGGGAAAACCCCAGGGGAGGGGAAAACCCCAGGGGAAAACCCCAGGGGAAAACCCCACCCCAGGGGAAAACCCCACCCC",
- "((((.((((....)))).((((.((((....)))).((((....)))).((((....)))).)))).((((....)))).))))");
- _anim
- .addRNA(
- "GGGGGGGGAAAACCCCAGGGGAAAACCCCAGGGGGGGGAAAACCCCAGGGGAAAACCCCAGGGGAAAACCCCAGGGGAAAACCCCGGGGAAAACCCCACCCCAGGGGAAAACCCCAGGGGAAAACCCCCCCC",
- "((((((((....)))).((((....)))).((((((((....)))).((((....)))).((((....)))).((((....))))((((....)))).)))).((((....)))).((((....))))))))");
- _anim.addRNA("GGGGAAAACCCC", "((((....))))");
- _anim.addRNA("GGGGAAGGGGAAAACCCCAGGGGAAAACCCCACCCC",
- "((((..((((....)))).((((....)))).))))");
- _anim.addRNA("GGGGAGGGGAAAACCCCAGGGGAAAACCCCAGGGGAAAACCCCACCCC",
- "((((.((((....)))).((((....)))).((((....)))).))))");
- _anim
- .addRNA(
- "GGGGAGGGGAAAAAAACCCCAGGGGAAAAAAACCCCAGGGGAAAAAAACCCCACCCC",
- "((((.((((.......)))).((((.......)))).((((.......)))).))))");
- _anim.start();
-
- add(vp, BorderLayout.WEST);
- add(_textPanel, BorderLayout.CENTER);
- } catch (ExceptionNonEqualLength e) {
- }
- }
-
- public void gracefulStop() {
- _anim.gracefulStop();
- }
-
- private class AboutAnimator implements ActionListener {
- VARNAPanel _vp;
- ArrayList<String> _structures = new ArrayList<String>();
- ArrayList<String> _sequences = new ArrayList<String>();
- int _period = 2000;
- boolean _over = false;
-
- public AboutAnimator(VARNAPanel vp) {
- super();
- _vp = vp;
- }
-
- /**
- * mode pointer for timer cycle -- DELAY1, TASK, DELAY2, STOP
- */
- int mode = 0;
-
- /**
- * modes for run()
- *
- */
- final int DELAY1 = 0, TASK = 1, DELAY2 = 2, STOP = 3;
- int i = 0;
-
- @Override
- public void actionPerformed(ActionEvent e) {
- run();
- }
-
- public void start() {
- int mode = DELAY1;
- run();
- }
-
- public void addRNA(String seq, String str) {
- _sequences.add(seq);
- _structures.add(str);
- }
-
- public void gracefulStop() {
- _over = true;
- }
-
- public void run() {
- int initialDelay;
- if (_over)
- mode = STOP;
- switch (mode) {
- case DELAY1:
- mode = TASK;
- initialDelay = _period;
- break;
- case TASK:
- String seq = _sequences.get(i);
- String str = _structures.get(i);
- try {
- _vp.drawRNAInterpolated(seq, str);
- mode = DELAY2;
- initialDelay = 500;
- } catch (ExceptionNonEqualLength e) {
- initialDelay = -1;
- }
- break;
- case DELAY2:
- i = (i + 1) % _sequences.size();
- mode = DELAY1;
- initialDelay = 0;
- break;
- case STOP:
- default:
- initialDelay = -1;
- break;
- }
- if (initialDelay >= 0) {
- Timer t = new Timer(initialDelay, this);
- t.setDelay(0);
- t.setRepeats(false);
- t.start();
- } else {
- System.out.println("VueAbout done");
- }
-
- }
- }
-
-}