/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.spacenet.run.old.story;
import automenta.spacenet.plugin.rdf.RDFGrapher;
import automenta.spacenet.run.old.graph.rdf.DemoRDF;
import automenta.spacenet.run.swing.*;
import automenta.spacenet.var.action.Actions;
import automenta.spacenet.var.graph.MemGraph;
import automenta.spacenet.var.graph.map.ScalarGraphMap;
import java.awt.Dimension;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import org.openrdf.rio.RDFFormat;
/**
@see http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/
@author seh
*/
public class StorySysTray extends SysTrayIcon {
JFrame window;
private final MemGraph graph;
private final ScalarGraphMap att;
public StorySysTray(Image image, String tooltip, PopupMenu menu) {
super(image, tooltip, menu);
//graph = new MemGraph();
graph = new RDFGrapher(DemoRDF.dataURL, RDFFormat.RDFXML).getGraph();
att = new ScalarGraphMap(graph);
}
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
if (e.getButton() == MouseEvent.BUTTON1) {
Point p = e.getLocationOnScreen();
toggleWindow(p);
}
}
protected void hideWindow() {
window.setVisible(false);
window = null;
}
public static Dimension getVideoSize() {
return Toolkit.getDefaultToolkit().getScreenSize();
}
private void showNewWindow(Point p) {
window = newWindow();
window.setVisible(true);
//TODO calculate best screen position. here is the center of the screen
centerWindow(window);
}
protected void toggleWindow(Point p) {
if (window != null) {
if (!window.isVisible()) {
showNewWindow(p);
} else {
hideWindow();
}
} else {
showNewWindow(p);
}
}
protected JFrame newWindow() {
JFrame jf = new SwingWindow(new NowPanel(att, new Actions()), 300, 400);
return jf;
}
public static void main(String[] args) {
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Exiting...");
System.exit(0);
}
};
PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem("Exit");
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);
new StorySysTray(Toolkit.getDefaultToolkit().getImage("tray.gif"), "Netention", popup);
}
public static void centerWindow(JFrame window) {
{
window.setSize((int) (getVideoSize().getWidth() / 4), (int) (getVideoSize().getHeight() / 2));
}
//TRY TO CENTER IN FIRST SCREEN
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
GraphicsDevice gd = gs[j];
Rectangle s = gd.getDefaultConfiguration().getBounds();
int x = (int)(s.getWidth() - window.getWidth())/2;
int y = (int)(s.getHeight() - window.getHeight())/2;
window.setLocation(x, y);
return;
}
//DEFAULT - place relative to entire virtual screen
{
window.setLocation((int) (getVideoSize().getWidth() - window.getWidth()), 0);
}
}
}