/** * */ package org.hyperdata.scute.main; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.InvocationTargetException; import javax.swing.JButton; import javax.swing.SwingUtilities; //import org.hdesktop.swingx.JXMultiSplitPane; //import org.hdesktop.swingx.MultiSplitLayout.Leaf; import org.jdesktop.swingx.*; import org.jdesktop.swingx.action.*; import org.jdesktop.swingx.MultiSplitLayout.*; import org.hyperdata.scute.system.Log; /** * @author danny * */ public class SplitScreen implements ActionListener { private static final double LEFT_DEFAULT_WEIGHT = 0.2; private static final double MIDDLE_DEFAULT_WEIGHT = 0.5; private static final double RIGHT_DEFAULT_WEIGHT = 0.3; private JButton leftButton; private JButton rightButton; private Leaf leftLeaf; private Leaf rightLeaf; private Leaf middleLeaf; private double leftWeight = 0; private double middleWeight = 1; private double rightWeight = 0; private JXMultiSplitPane multiSplitPane; public JButton getLeftButton() { return this.leftButton; } public JButton getRightButton() { return this.rightButton; } /** * @param multiSplitPane * @param leftLeaf * @param centerLeaf * @param rightLeaf */ public SplitScreen(JXMultiSplitPane multiSplitPane, Leaf leftLeaf, Leaf centerLeaf, Leaf rightLeaf) { this.multiSplitPane = multiSplitPane; this.leftLeaf = leftLeaf; this.rightLeaf = rightLeaf; this.middleLeaf = centerLeaf; leftButton = new JButton(">"); leftButton.addActionListener(this); rightButton = new JButton("<"); rightButton.addActionListener(this); } /* * (non-Javadoc) * * @see * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent event) { JButton source = (JButton) event.getSource(); rightWeight = rightLeaf.getWeight(); leftWeight = leftLeaf.getWeight(); if (source.equals(leftButton)) { flipLeft(); } if (source.equals(rightButton)) { flipRight(); } // System.out.println(source); if (source.getText().equals("")) { setDefaults(); } } /** * */ private void flipLeft() { // System.out.println("flip left"); if (leftWeight >= LEFT_DEFAULT_WEIGHT) { leftWeight = 0; middleWeight = 1 - rightWeight; leftButton.setText(">"); setWeights(); } else { leftWeight = LEFT_DEFAULT_WEIGHT; middleWeight = MIDDLE_DEFAULT_WEIGHT - rightWeight; leftButton.setText("<"); setWeights(); } } private void flipRight() { if (rightWeight >= RIGHT_DEFAULT_WEIGHT) { rightWeight = 0; middleWeight = 1 - leftWeight; rightButton.setText(">"); setWeights(); } else { rightWeight = RIGHT_DEFAULT_WEIGHT; middleWeight = MIDDLE_DEFAULT_WEIGHT - leftWeight; rightButton.setText("<"); setWeights(); } } /** * */ private void setWeights() { leftLeaf.setWeight(leftWeight); middleLeaf.setWeight(middleWeight); rightLeaf.setWeight(rightWeight); // System.out.println(leftWeight + " " + middleWeight + " " + rightWeight); multiSplitPane.validate(); // multiSplitPane.getParent().repaint(); } public void setDefaults() { leftButton.setText("<"); rightButton.setText(">"); leftWeight = LEFT_DEFAULT_WEIGHT; middleWeight = MIDDLE_DEFAULT_WEIGHT; rightWeight = RIGHT_DEFAULT_WEIGHT; setWeights(); } public void setFullMiddle() { leftWeight = 0; middleWeight = 1; rightWeight = 0; setWeights(); } }