QedeqMainPane.java
001 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
002  *
003  * Copyright 2000-2013,  Michael Meyling <mime@qedeq.org>.
004  *
005  * "Hilbert II" is free software; you can redistribute
006  * it and/or modify it under the terms of the GNU General Public
007  * License as published by the Free Software Foundation; either
008  * version 2 of the License, or (at your option) any later version.
009  *
010  * This program is distributed in the hope that it will be useful,
011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013  * GNU General Public License for more details.
014  */
015 
016 package org.qedeq.gui.se.main;
017 
018 import java.awt.BorderLayout;
019 import java.awt.Dimension;
020 
021 import javax.swing.JComponent;
022 import javax.swing.JPanel;
023 import javax.swing.JScrollPane;
024 import javax.swing.JSplitPane;
025 
026 import org.qedeq.gui.se.control.QedeqController;
027 import org.qedeq.gui.se.control.SelectionListenerList;
028 import org.qedeq.gui.se.tree.QedeqTreeCtrl;
029 import org.qedeq.gui.se.tree.QedeqTreeModel;
030 import org.qedeq.gui.se.tree.QedeqTreeView;
031 import org.qedeq.kernel.bo.log.ModuleEventLog;
032 
033 import com.jgoodies.forms.factories.Borders;
034 import com.jgoodies.looks.Options;
035 import com.jgoodies.uif_lite.component.UIFSplitPane;
036 
037 /**
038  * Main pain of QEDEQ GUI window.
039  *
040  @author  Michael Meyling
041  @version $Revision: 1.3 $
042  */
043 public class QedeqMainPane extends JPanel {
044 
045     /**
046      * Constructor.
047      *
048      @param   controller  Enables controller access.
049      */
050     public QedeqMainPane(final QedeqController controller) {
051         setLayout(new BorderLayout());
052         setOpaque(false);
053         setBorder(Borders.DIALOG_BORDER);
054         add(createSplits(controller));
055     }
056 
057     /**
058      * Creates the two main stripped split panes.
059      *
060      @param   controller  Enables controller access.
061      @return  Splits.
062      */
063     private JComponent createSplits(final QedeqController controller) {
064 
065         final QedeqTreeModel treeModel = new QedeqTreeModel();
066         ModuleEventLog.getInstance().addLog(treeModel);
067         final QedeqTreeView treeView = new QedeqTreeView(treeModel);
068 
069         SelectionListenerList listener = new SelectionListenerList();
070         final UpperTabbedView tabbedView = new UpperTabbedView(listener);
071         listener.addListener(tabbedView);
072         final LowerTabbedView lowerView = new LowerTabbedView(listener);
073 
074         tabbedView.putClientProperty(Options.EMBEDDED_TABS_KEY, Boolean.TRUE);
075 
076         final QedeqTreeCtrl treeCtrl = new QedeqTreeCtrl(treeView, treeModel, tabbedView, lowerView,
077             controller);
078         controller.setTreeCtrl(treeCtrl);
079 
080         final JComponent left = new JScrollPane(treeView);
081         left.setPreferredSize(new Dimension(200200));
082 
083         final JComponent right = tabbedView;
084         right.setPreferredSize(new Dimension(200150));
085 
086         final JComponent lower = lowerView;
087         lower.setPreferredSize(new Dimension(200100));
088 
089         final JSplitPane horizontalSplit = UIFSplitPane.createStrippedSplitPane(
090             JSplitPane.HORIZONTAL_SPLIT,
091             left,
092             right);
093 
094 
095         final JSplitPane verticalSplit = UIFSplitPane.createStrippedSplitPane(
096             JSplitPane.VERTICAL_SPLIT,
097             horizontalSplit,
098             lower);
099 
100         verticalSplit.setResizeWeight(0.80);
101         return verticalSplit;
102     }
103 
104 }