/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* Lagis.java
*
* Created on 16. M\u00E4rz 2007, 12:10
*/
package Sirius.navigator;
import com.jgoodies.looks.plastic.PlasticXPLookAndFeel;
import net.infonode.docking.DockingWindow;
import net.infonode.docking.DockingWindowListener;
import net.infonode.docking.OperationAbortedException;
import net.infonode.docking.RootWindow;
import net.infonode.docking.SplitWindow;
import net.infonode.docking.TabWindow;
import net.infonode.docking.View;
import net.infonode.docking.mouse.DockingWindowActionMouseButtonListener;
import net.infonode.docking.properties.RootWindowProperties;
import net.infonode.docking.theme.DockingWindowsTheme;
import net.infonode.docking.theme.ShapedGradientDockingTheme;
import net.infonode.docking.util.DeveloperUtil;
import net.infonode.docking.util.DockingUtil;
import net.infonode.docking.util.PropertiesUtil;
import net.infonode.docking.util.StringViewMap;
import net.infonode.gui.componentpainter.AlphaGradientComponentPainter;
import net.infonode.gui.componentpainter.GradientComponentPainter;
import net.infonode.tabbedpanel.TabAreaVisiblePolicy;
import net.infonode.util.Direction;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import de.cismet.tools.gui.log4jquickconfig.Log4JQuickConfig;
/**
* DOCUMENT ME!
*
* @author Puhl
* @version $Revision$, $Date$
*/
public class NavigatorX extends javax.swing.JFrame {
//~ Static fields/initializers ---------------------------------------------
private static final int ICON_SIZE = 8;
private static final Icon VIEW_ICON = new Icon() {
@Override
public int getIconHeight() {
return ICON_SIZE;
}
@Override
public int getIconWidth() {
return ICON_SIZE;
}
@Override
public void paintIcon(final Component c, final Graphics g, final int x, final int y) {
final Color oldColor = g.getColor();
g.setColor(new Color(70, 70, 70));
g.fillRect(x, y, ICON_SIZE, ICON_SIZE);
g.setColor(new Color(100, 230, 100));
g.fillRect(x + 1, y + 1, ICON_SIZE - 2, ICON_SIZE - 2);
g.setColor(oldColor);
}
};
//~ Instance fields --------------------------------------------------------
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
private RootWindow rootWindow;
// Panels
// Views
private View vCatalogue;
private View vSearchResults;
private View vObjectInfo;
private View vDescription;
private View vEditor;
private View vKarte;
private View vNKF;
private View vRechteDetail;
private View vRessort;
// Icons & Image
private Icon icoDescr = new javax.swing.ImageIcon(getClass().getResource(
"/Sirius/navigator/resource/imgx/descriptionpane_icon.gif")); // NOI18N
private Icon icoCatalogue = new javax.swing.ImageIcon(getClass().getResource(
"/Sirius/navigator/resource/imgx/catalogue_tree_icon.gif")); // NOI18N
private Icon icoAttributetable = new javax.swing.ImageIcon(getClass().getResource(
"/Sirius/navigator/resource/imgx/attributetable_icon.gif")); // NOI18N
private Icon icoSearchresults = new javax.swing.ImageIcon(getClass().getResource(
"/Sirius/navigator/resource/imgx/searchresults_tree_icon.gif")); // NOI18N
private StringViewMap viewMap = new StringViewMap();
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton16;
private javax.swing.JLabel jLabel1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JToolBar jToolBar3;
private javax.swing.JPanel panAll;
private javax.swing.JPanel panMain;
private javax.swing.JPanel panStatusbar;
private javax.swing.JPanel panToolbar;
// End of variables declaration//GEN-END:variables
//~ Constructors -----------------------------------------------------------
/**
* Creates new form Lagis.
*/
public NavigatorX() {
Log4JQuickConfig.configure4LumbermillOnLocalhost();
try {
javax.swing.UIManager.setLookAndFeel(new PlasticXPLookAndFeel());
} catch (Exception ex) {
ex.printStackTrace();
}
initComponents();
initPanels();
initInfoNode();
doLayoutInfoNode();
doConfigKeystrokes();
// adding infonode(seperate panel) to the frame
panMain.add(rootWindow, BorderLayout.CENTER);
// getContentPane().add(pFlurstueck);
// pFlurstueck.setVisible(true);
// setVisible(true);
// getContentPane().add(panMain);
// setSize(1000,750);
// setTitle("Lagis Prototyp");
rootWindow.addListener(new DockingWindowListener() {
@Override
public void viewFocusChanged(final View view, final View view0) {
}
@Override
public void windowAdded(final DockingWindow dockingWindow, final DockingWindow dockingWindow0) {
if (log.isDebugEnabled()) {
log.debug("windowAdded"); // NOI18N
}
}
@Override
public void windowClosed(final DockingWindow dockingWindow) {
}
@Override
public void windowClosing(final DockingWindow dockingWindow) throws OperationAbortedException {
}
@Override
public void windowDocked(final DockingWindow dockingWindow) {
if (log.isDebugEnabled()) {
log.debug("windowDocked"); // NOI18N
}
}
@Override
public void windowDocking(final DockingWindow dockingWindow) throws OperationAbortedException {
if (log.isDebugEnabled()) {
log.debug("windowDocking"); // NOI18N
}
}
@Override
public void windowHidden(final DockingWindow dockingWindow) {
}
@Override
public void windowMaximized(final DockingWindow dockingWindow) {
}
@Override
public void windowMaximizing(final DockingWindow dockingWindow) throws OperationAbortedException {
}
@Override
public void windowMinimized(final DockingWindow dockingWindow) {
}
@Override
public void windowMinimizing(final DockingWindow dockingWindow) throws OperationAbortedException {
}
@Override
public void windowRemoved(final DockingWindow dockingWindow, final DockingWindow dockingWindow0) {
}
@Override
public void windowRestored(final DockingWindow dockingWindow) {
if (log.isDebugEnabled()) {
log.debug("windowRestored"); // NOI18N
}
}
@Override
public void windowRestoring(final DockingWindow dockingWindow) throws OperationAbortedException {
if (log.isDebugEnabled()) {
log.debug("windowRestoring"); // NOI18N
}
}
@Override
public void windowShown(final DockingWindow dockingWindow) {
if (log.isDebugEnabled()) {
log.debug("windowShown"); // NOI18N
}
if (log.isInfoEnabled()) {
log.info(
"dockingWindow.getParent().getBounds().getY():"
+ dockingWindow.getParent().getBounds().getY()); // NOI18N
}
}
@Override
public void windowUndocked(final DockingWindow dockingWindow) {
}
@Override
public void windowUndocking(final DockingWindow dockingWindow) throws OperationAbortedException {
}
});
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*/
private void initPanels() {
// pFlurstueck = new FlurstueckPanel();
// pVertraege= new VertraegePanel();
// pNKFOverview= new NKFOverviewPanel();
// pDMS= new DMSPanel();
// pKarte= new KartenPanel();
// pNKF= new NKFPanel();
// pRechteDetail= new RechteDetailPanel();
// pRessort= new RessortPanel();
}
/**
* DOCUMENT ME!
*/
private void initInfoNode() {
vCatalogue = new View(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.vCatalogue.title"),
icoCatalogue,
null); // NOI18N
viewMap.addView("Katalog", vCatalogue); // NOI18N
vObjectInfo = new View(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.vObjectInfo.title"),
icoAttributetable,
null); // NOI18N
viewMap.addView("Informationene zum Objekt", vObjectInfo); // NOI18N
vDescription = new View(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.vDescription.title"),
icoDescr,
null); // NOI18N
viewMap.addView("Beschreibung", vDescription); // NOI18N
vEditor = new View(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.vEditor.title"),
icoAttributetable,
null); // NOI18N
viewMap.addView("Attributeditor", vEditor); // NOI18N
vSearchResults = new View(org.openide.util.NbBundle.getMessage(
NavigatorX.class,
"NavigatorX.vSearchResults.title"),
icoSearchresults,
null); // NOI18N
viewMap.addView("Suchergebnisse", vSearchResults); // NOI18N
// vNKF= new View("Nutzung",null,null);
// viewMap.addView("Nutzung",vNKF);
//
// vRechteDetail= new View("Rechte & Belastungen",null,null);
// viewMap.addView("Rechte & Belastungen",vRechteDetail);
//
// vRessort= new View("Ressort",null,null);
// viewMap.addView("Ressort",vRessort);
//
rootWindow = DockingUtil.createRootWindow(viewMap, true);
// InfoNode configuration
rootWindow.addTabMouseButtonListener(DockingWindowActionMouseButtonListener.MIDDLE_BUTTON_CLOSE_LISTENER);
// DockingWindowsTheme theme = new
// ShapedGradientDockingTheme(0f,0.5f,UIManagerColorProvider.TABBED_PANE_DARK_SHADOW,new
// FixedColorProvider(Color.BLUE),true);
final DockingWindowsTheme theme = new ShapedGradientDockingTheme();
rootWindow.getRootWindowProperties().addSuperObject(
theme.getRootWindowProperties());
final RootWindowProperties titleBarStyleProperties = PropertiesUtil.createTitleBarStyleRootWindowProperties();
rootWindow.getRootWindowProperties().addSuperObject(
titleBarStyleProperties);
rootWindow.getRootWindowProperties().getDockingWindowProperties().setUndockEnabled(true);
final AlphaGradientComponentPainter x = new AlphaGradientComponentPainter(
java.awt.SystemColor.inactiveCaptionText,
java.awt.SystemColor.activeCaptionText,
java.awt.SystemColor.activeCaptionText,
java.awt.SystemColor.inactiveCaptionText);
rootWindow.getRootWindowProperties().getDragRectangleShapedPanelProperties().setComponentPainter(x);
rootWindow.getRootWindowProperties()
.getViewProperties()
.getViewTitleBarProperties()
.getNormalProperties()
.getShapedPanelProperties()
.setComponentPainter(new GradientComponentPainter(
new Color(124, 160, 221),
new Color(236, 233, 216),
new Color(124, 160, 221),
new Color(236, 233, 216)));
}
/**
* DOCUMENT ME!
*/
public void doLayoutInfoNode() {
rootWindow.getRootWindowProperties()
.getTabWindowProperties()
.getTabbedPanelProperties()
.getTabAreaProperties()
.setTabAreaVisiblePolicy(TabAreaVisiblePolicy.ALWAYS);
final TabWindow cat = new TabWindow(
new DockingWindow[] {
vCatalogue,
vSearchResults
});
final TabWindow main = new TabWindow(
new DockingWindow[] {
vDescription,
vEditor
});
cat.getTabWindowProperties().getTabbedPanelProperties().setTabAreaOrientation(Direction.UP);
main.getTabWindowProperties().getTabbedPanelProperties().setTabAreaOrientation(Direction.UP);
rootWindow.setWindow(new SplitWindow(
true,
0.23710318f,
new SplitWindow(false, 0.6081461f,
cat,
vObjectInfo),
main));
vEditor.restoreFocus();
vSearchResults.restoreFocus();
}
/**
* DOCUMENT ME!
*/
public void doConfigKeystrokes() {
final KeyStroke configLoggerKeyStroke = KeyStroke.getKeyStroke('L', InputEvent.CTRL_MASK);
final Action configAction = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
DeveloperUtil.createWindowLayoutFrame(
org.openide.util.NbBundle.getMessage(
NavigatorX.class,
"NavigatorX.doConfigKeystrokes().JFrame_anon1.title"), // NOI18N
rootWindow)
.setVisible(true);
}
});
}
};
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(configLoggerKeyStroke, "SHOW_LAYOUT"); // NOI18N
getRootPane().getActionMap().put("SHOW_LAYOUT", configAction); // NOI18N
final KeyStroke layoutKeyStroke = KeyStroke.getKeyStroke('S', InputEvent.CTRL_MASK); // NOI18N
final Action layoutAction = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
doLayoutInfoNode();
}
});
}
};
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(layoutKeyStroke, "RESET_LAYOUT"); // NOI18N
getRootPane().getActionMap().put("RESET_LAYOUT", layoutAction); // NOI18N
}
/**
* This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
* content of this method is always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jToolBar3 = new javax.swing.JToolBar();
jButton16 = new javax.swing.JButton();
panAll = new javax.swing.JPanel();
panMain = new javax.swing.JPanel();
jToolBar1 = new javax.swing.JToolBar();
jButton1 = new javax.swing.JButton();
panStatusbar = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
panToolbar = new javax.swing.JPanel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jButton16.setText(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.jButton16.text")); // NOI18N
jButton16.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(final java.awt.event.ActionEvent evt) {
jButton16ActionPerformed(evt);
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.title")); // NOI18N
panAll.setLayout(new java.awt.BorderLayout());
panMain.setLayout(new java.awt.BorderLayout());
jButton1.setText(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.jButton1.text")); // NOI18N
jToolBar1.add(jButton1);
panMain.add(jToolBar1, java.awt.BorderLayout.PAGE_START);
panAll.add(panMain, java.awt.BorderLayout.CENTER);
panStatusbar.setLayout(new java.awt.BorderLayout());
jLabel1.setText(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.jLabel1.text")); // NOI18N
panStatusbar.add(jLabel1, java.awt.BorderLayout.CENTER);
panAll.add(panStatusbar, java.awt.BorderLayout.SOUTH);
panToolbar.setLayout(new java.awt.BorderLayout());
panAll.add(panToolbar, java.awt.BorderLayout.NORTH);
getContentPane().add(panAll, java.awt.BorderLayout.CENTER);
jMenu1.setText(org.openide.util.NbBundle.getMessage(NavigatorX.class, "NavigatorX.jMenu1.text")); // NOI18N
jMenuBar1.add(jMenu1);
setJMenuBar(jMenuBar1);
final java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width - 1024) / 2, (screenSize.height - 768) / 2, 1024, 768);
} // </editor-fold>//GEN-END:initComponents
/**
* DOCUMENT ME!
*
* @param evt DOCUMENT ME!
*/
private void jButton16ActionPerformed(final java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButton16ActionPerformed
// TODO add your handling code here:
} //GEN-LAST:event_jButton16ActionPerformed
/**
* DOCUMENT ME!
*
* @param args the command line arguments
*/
public static void main(final String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NavigatorX().setVisible(true);
}
});
}
}