Skip to content
Snippets Groups Projects
Commit 5fb48245 authored by tjc's avatar tjc
Browse files

integrate database and file manager

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@4852 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent 1120a59e
Branches
Tags
No related merge requests found
......@@ -20,7 +20,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ActMain.java,v 1.10 2006-10-18 14:25:23 tjc Exp $
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ActMain.java,v 1.11 2006-10-23 13:34:12 tjc Exp $
*/
package uk.ac.sanger.artemis.components;
......@@ -31,7 +31,7 @@ import uk.ac.sanger.artemis.*;
import uk.ac.sanger.artemis.sequence.Bases;
import uk.ac.sanger.artemis.sequence.NoSequenceException;
import uk.ac.sanger.artemis.components.database.DatabaseEntrySource;
import uk.ac.sanger.artemis.components.database.DatabaseJFrame;
import uk.ac.sanger.artemis.components.database.DatabaseJPanel;
import uk.ac.sanger.artemis.components.database.DatabaseTreeNode;
import uk.ac.sanger.artemis.util.*;
......@@ -41,14 +41,13 @@ import uk.ac.sanger.artemis.io.SimpleEntryInformation;
import java.awt.event.*;
import java.io.IOException;
import java.io.File;
import javax.swing.JFrame;
/**
* The main window for the Artemis Comparison Tool.
*
* @author Kim Rutherford <kmr@sanger.ac.uk>
* @version $Id: ActMain.java,v 1.10 2006-10-18 14:25:23 tjc Exp $
* @version $Id: ActMain.java,v 1.11 2006-10-23 13:34:12 tjc Exp $
**/
public class ActMain extends Splash
......@@ -96,9 +95,13 @@ public class ActMain extends Splash
new ComparatorDialog(ActMain.this).setVisible(true);
}
};
if(System.getProperty("chado") != null)
makeMenuItem(file_menu, "Open Database and SSH File Manager ...", menu_listener_ssh);
else
makeMenuItem(file_menu, "Open SSH File Manager ...", menu_listener_ssh);
final boolean sanger_options =
/* final boolean sanger_options =
Options.getOptions().getPropertyTruthValue("sanger_options");
if(sanger_options)
......@@ -114,7 +117,7 @@ public class ActMain extends Splash
makeMenuItem(file_menu, "Database Entry ...", menu_listener);
if(System.getProperty("chado") != null)
launchDatabaseJFrame(false);
}
}*/
makeMenuItem(file_menu, "Quit", quit_listener);
}
......@@ -341,8 +344,15 @@ public class ActMain extends Splash
if(!entry_source.setLocation(prompt_user))
return null;
final DatabaseJFrame frame = new DatabaseJFrame(entry_source,
JFrame frame = new JFrame("Organism List");
final DatabaseJPanel pane = new DatabaseJPanel(entry_source,
ActMain.this);
frame.getContentPane().add(pane);
frame.pack();
Utilities.rightJustifyFrame(frame);
frame.setVisible(true);
frame.setJMenuBar(pane.makeMenuBar(entry_source, ActMain.this));
frame.setVisible(true);
getStatusLabel().setText("");
return null;
......
......@@ -20,13 +20,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ArtemisMain.java,v 1.21 2006-10-18 14:25:23 tjc Exp $
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ArtemisMain.java,v 1.22 2006-10-23 13:34:12 tjc Exp $
*/
package uk.ac.sanger.artemis.components;
import uk.ac.sanger.artemis.components.database.DatabaseEntrySource;
import uk.ac.sanger.artemis.components.database.DatabaseJFrame;
import uk.ac.sanger.artemis.components.database.DatabaseJPanel;
import uk.ac.sanger.artemis.components.filetree.FileManager;
import uk.ac.sanger.artemis.components.filetree.LocalAndRemoteFileManager;
import uk.ac.sanger.artemis.*;
......@@ -45,12 +45,13 @@ import java.awt.event.*;
import java.awt.Toolkit;
import java.io.*;
import java.awt.datatransfer.*;
import javax.swing.JFrame;
/**
* The main window for the Artemis sequence editor.
*
* @author Kim Rutherford <kmr@sanger.ac.uk>
* @version $Id: ArtemisMain.java,v 1.21 2006-10-18 14:25:23 tjc Exp $
* @version $Id: ArtemisMain.java,v 1.22 2006-10-23 13:34:12 tjc Exp $
**/
public class ArtemisMain extends Splash
......@@ -62,6 +63,9 @@ public class ArtemisMain extends Splash
private EntryEditVector entry_edit_objects = new EntryEditVector();
protected static FileManager filemanager = null;
private LocalAndRemoteFileManager fm;
/**
* The constructor creates all the components for the main Artemis
* window and sets up all the menu callbacks.
......@@ -82,10 +86,8 @@ public class ArtemisMain extends Splash
};
makeMenuItem(file_menu, "Open File Manager ...", menu_listener);
ActionListener menu_listener_ssh = new ActionListener()
{
private LocalAndRemoteFileManager fm;
public void actionPerformed(ActionEvent event)
{
if(fm == null)
......@@ -94,6 +96,10 @@ public class ArtemisMain extends Splash
fm.setVisible(true);
}
};
if(System.getProperty("chado") != null)
makeMenuItem(file_menu, "Open Database and SSH File Manager ...", menu_listener_ssh);
else
makeMenuItem(file_menu, "Open SSH File Manager ...", menu_listener_ssh);
......@@ -134,12 +140,12 @@ public class ArtemisMain extends Splash
final boolean sanger_options =
Options.getOptions().getPropertyTruthValue("sanger_options");
if(sanger_options)
/* if(sanger_options)
{
makeMenuItem(file_menu, "Database Entry ...", menu_listener);
if(System.getProperty("chado") != null)
launchDatabaseJFrame(false);
}
fm = new LocalAndRemoteFileManager(ArtemisMain.this);
}*/
menu_listener = new ActionListener()
{
......@@ -259,9 +265,14 @@ public class ArtemisMain extends Splash
if(!entry_source.setLocation(prompt_user))
return null;
final DatabaseJFrame frame = new DatabaseJFrame(entry_source,
JFrame frame = new JFrame("Organism List");
final DatabaseJPanel pane = new DatabaseJPanel(entry_source,
ArtemisMain.this);
frame.getContentPane().add(pane);
frame.pack();
Utilities.rightJustifyFrame(frame);
frame.setVisible(true);
frame.setJMenuBar(pane.makeMenuBar(entry_source, ArtemisMain.this));
getStatusLabel().setText("");
return null;
}
......
/* DatabaseJFrame.java
/* DatabaseJPanel.java
*
* created: June 2005
*
......@@ -20,7 +20,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/database/DatabaseJFrame.java,v 1.1 2006-10-18 14:25:23 tjc Exp $
* $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/database/DatabaseJPanel.java,v 1.1 2006-10-23 13:34:12 tjc Exp $
*/
package uk.ac.sanger.artemis.components.database;
......@@ -29,12 +29,12 @@ import uk.ac.sanger.artemis.components.*;
import uk.ac.sanger.artemis.Entry;
import uk.ac.sanger.artemis.sequence.*;
import uk.ac.sanger.artemis.util.InputStreamProgressEvent;
import uk.ac.sanger.artemis.util.InputStreamProgressListener;
import uk.ac.sanger.artemis.util.OutOfRangeException;
import uk.ac.sanger.artemis.util.DatabaseDocument;
import uk.ac.sanger.artemis.io.DatabaseDocumentEntry;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
......@@ -60,16 +60,17 @@ import java.awt.Cursor;
import java.awt.FontMetrics;
import java.io.*;
public class DatabaseJFrame extends JFrame
public class DatabaseJPanel extends JPanel
{
private JLabel status_line = new JLabel("");
private boolean splitGFFEntry = false;
private JTree tree;
public DatabaseJFrame(final DatabaseEntrySource entry_source,
public DatabaseJPanel(final DatabaseEntrySource entry_source,
final Splash splash_main)
{
super("Organism List");
final JTree tree = entry_source.getDatabaseTree();
setLayout(new BorderLayout());
tree = entry_source.getDatabaseTree();
// Listen for when the selection changes.
MouseListener mouseListener = new MouseAdapter()
......@@ -89,10 +90,7 @@ public class DatabaseJFrame extends JFrame
screen.height * 6 / 10);
scroll.setPreferredSize(dim_frame);
setJMenuBar(makeMenuBar(entry_source, tree, splash_main));
JPanel pane = (JPanel)getContentPane();
pane.add(scroll, BorderLayout.CENTER);
add(scroll, BorderLayout.CENTER);
final FontMetrics fm = this.getFontMetrics(status_line.getFont());
......@@ -105,16 +103,20 @@ public class DatabaseJFrame extends JFrame
Border compound = BorderFactory.createCompoundBorder(raisedbevel,
loweredbevel);
status_line.setBorder(compound);
pane.add(status_line, BorderLayout.SOUTH);
add(status_line, BorderLayout.SOUTH);
pack();
Utilities.rightJustifyFrame(this);
JLabel title_line = new JLabel("Database List");
title_line.setMinimumSize(new Dimension(100, font_height));
title_line.setPreferredSize(new Dimension(100, font_height));
title_line.setBorder(compound);
add(title_line, BorderLayout.NORTH);
}
/**
*
* Show the selected sequence in the tree
*
* @param entry_source
* @param tree
* @param splash_main
*/
private void showSelected(final DatabaseEntrySource entry_source,
final JTree tree, final Splash splash_main)
......@@ -141,9 +143,13 @@ public class DatabaseJFrame extends JFrame
}
/**
*
* Retrieve a database entry.
*
* @param id
* @param entry_source
* @param tree
* @param splash_main
* @param node_name
* @param schema
*/
private void getEntryEditFromDatabase(final String id,
final DatabaseEntrySource entry_source, final JTree tree,
......@@ -161,13 +167,10 @@ public class DatabaseJFrame extends JFrame
tree.setCursor(cbusy);
try
{
final InputStreamProgressListener progress_listener =
splash_main.getInputStreamProgressListener();
entry_source.setSplitGFF(splitGFFEntry);
final Entry entry = entry_source.getEntry(id, schema,
progress_listener);
stream_progress_listener);
DatabaseDocumentEntry db_entry =
......@@ -228,8 +231,14 @@ public class DatabaseJFrame extends JFrame
}
private JMenuBar makeMenuBar(final DatabaseEntrySource entry_source,
final JTree tree, final Splash splash_main)
/**
* Create a menu bar
* @param entry_source
* @param splash_main
* @return
*/
public JMenuBar makeMenuBar(final DatabaseEntrySource entry_source,
final Splash splash_main)
{
JMenuBar mBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
......@@ -275,4 +284,26 @@ public class DatabaseJFrame extends JFrame
return mBar;
}
/**
* An InputStreamProgressListener used to update the error label with the
* current number of chars read.
**/
private final InputStreamProgressListener stream_progress_listener =
new InputStreamProgressListener()
{
public void progressMade(final InputStreamProgressEvent event)
{
final int char_count = event.getCharCount();
if(char_count == -1)
status_line.setText("");
else
status_line.setText("chars read so far: " + char_count);
}
public void progressMade(String progress)
{
status_line.setText(progress);
}
};
}
......@@ -21,6 +21,8 @@
package uk.ac.sanger.artemis.components.filetree;
import uk.ac.sanger.artemis.components.database.DatabaseEntrySource;
import uk.ac.sanger.artemis.components.database.DatabaseJPanel;
import uk.ac.sanger.artemis.j2ssh.SshLogin;
import uk.ac.sanger.artemis.j2ssh.SshFileManager;
import uk.ac.sanger.artemis.util.StringVector;
......@@ -28,6 +30,7 @@ import uk.ac.sanger.artemis.Options;
import javax.swing.table.TableColumn;
import javax.swing.*;
import java.io.File;
import java.io.FileFilter;
import java.awt.event.*;
......@@ -59,7 +62,7 @@ public class LocalAndRemoteFileManager extends JFrame
*/
public LocalAndRemoteFileManager(JFrame frame, FileFilter filter)
{
super("File Manager");
super();
final JPanel localPanel = new JPanel(new BorderLayout());
......@@ -78,7 +81,7 @@ public class LocalAndRemoteFileManager extends JFrame
//
final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
final Dimension panelSize = new Dimension((int)(screen.getWidth()/3),
(int)(screen.getHeight()/3));
(int)(screen.getHeight()/4));
String remote_name = "";
final JLabel remote_status_line = getStatusLabel("");
......@@ -109,9 +112,11 @@ public class LocalAndRemoteFileManager extends JFrame
});
bdown.add(connect);
int ypos = panelSize.height-connect.getPreferredSize().height;
/*int ypos = panelSize.height-connect.getPreferredSize().height;
if(ypos>0)
bdown.add(Box.createVerticalStrut(ypos/2));
bdown.add(Box.createVerticalStrut(ypos/2));*/
bdown.add(Box.createVerticalGlue());
remotePanel.add(bdown, BorderLayout.SOUTH);
remotePanel.setPreferredSize(panelSize);
}
......@@ -127,13 +132,41 @@ public class LocalAndRemoteFileManager extends JFrame
treePane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
localPanel,remotePanel);
treePane.setOneTouchExpandable(true);
JPanel pane = (JPanel)getContentPane();
pane.setLayout(new BorderLayout());
pane.add(treePane, BorderLayout.CENTER);
treePane.setDividerLocation((int)(screen.getHeight()/3));
setJMenuBar(makeMenuBar(pane,ftree,sshtree,localPanel,remotePanel,treePane,panelSize));
if(System.getProperty("chado") != null)
{
setTitle("Database and File Manager");
DatabaseEntrySource entry_source = new DatabaseEntrySource();
if(!entry_source.setLocation(true))
return;
JLabel label = new JLabel(" Database Loading...");
JScrollPane dbScroll = new JScrollPane(label);
DbConnectionThread dbthread =
new DbConnectionThread(dbScroll, panelSize, entry_source);
dbthread.start();
dbScroll.setPreferredSize(panelSize);
JSplitPane mainSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
dbScroll, treePane);
treePane.setDividerLocation((int)(screen.getHeight()/4));
mainSplit.setOneTouchExpandable(true);
mainSplit.setDividerLocation((int)(screen.getHeight()/4));
pane.add(mainSplit, BorderLayout.CENTER);
}
else
{
setTitle("File Manager");
pane.add(treePane, BorderLayout.CENTER);
treePane.setDividerLocation((int)(screen.getHeight()/4));
}
setJMenuBar(makeMenuBar(pane,ftree,sshtree,localPanel,
remotePanel,treePane,panelSize));
localPanel.add(getFileFileterComboBox(ftree), BorderLayout.SOUTH);
localTree.setPreferredSize(panelSize);
......@@ -535,60 +568,32 @@ public class LocalAndRemoteFileManager extends JFrame
return path;
}
class UpButton extends JButton
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setColor(new Color(0,128,0));
float loc1[][] = { {11,18}, {7,18}, {7,14},
{3,14}, {11,4} };
g2.fill(makeShape(loc1));
g2.setColor(Color.green);
float loc2[][] = { {11,18}, {15,18}, {15,14},
{19,14}, {11,4} };
g2.fill(makeShape(loc2));
setSize(22,24);
}
}
class TextButton extends JButton
public class DbConnectionThread extends Thread
{
private String s1;
private String s2;
private Color c;
private JScrollPane dbScroll;
private Dimension panelSize;
private DatabaseEntrySource entry_source;
public TextButton(String text)
public DbConnectionThread(final JScrollPane dbScroll,
final Dimension panelSize,
final DatabaseEntrySource entry_source)
{
this(text, Color.black);
this.dbScroll = dbScroll;
this.panelSize = panelSize;
this.entry_source = entry_source;
}
public TextButton(String text, Color c)
public void run()
{
super();
this.s1 = text.substring(0);
this.s2 = text.substring(1);
final DatabaseJPanel dbPane = new DatabaseJPanel(entry_source,
null);
dbPane.setPreferredSize(panelSize);
dbScroll.setViewportView(dbPane);
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Font font = new Font("Monospaced", Font.BOLD, 14);
g2.setFont(font);
g2.setColor(c);
g2.drawString(s1,4,18);
g2.setColor(Color.red);
g2.drawString(s2,10,15);
setSize(22,24);
}
}
public static void main(String args[])
......@@ -612,5 +617,6 @@ public class LocalAndRemoteFileManager extends JFrame
frame.pack();
frame.setVisible(true);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment