/** * 版权所有:上海鹏越惊虹信息技术发展有限公司 */ package org.infosec.ismp.applet.manager.component.dialog; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JInternalFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; import twaver.SpringLayouter; import twaver.TDataBox; import twaver.TWaverConst; import twaver.TWaverUtil; import twaver.network.OverviewPane; import twaver.network.TNetwork; /** * @author 肖高峰 * */ @SuppressWarnings("serial") public class TopoAutoLayout extends JInternalFrame{ private static String name = "视图布局"; @SuppressWarnings("unused") private TDataBox box ; private TNetwork network ; private ButtonGroup group = new ButtonGroup(); private JPanel controlPane = TWaverUtil.createVerticalPanel(3); @SuppressWarnings("unused") private JRadioButton currentRadioButton = null; /** * 构造 方法 * @param network 操作对象 */ public TopoAutoLayout(final TNetwork network){ super(name,false,true); this.network =network; box = network.getDataBox(); this.initControlPane(); this.getContentPane().add(controlPane); this.setTitle(name); this.pack(); this.setLocation(600, 60); this.setSize(180, 300); network.getLayeredPane().add(this, 0); //network.doLayout(TWaverConst.LAYOUT_SYMMETRIC); this.network.setElementTransparentAreaSelectable(true); this.setVisible(true); } /** * 初始化布局面板 */ private void initControlPane(){ final SpringLayouter layouter = network.getSpringLayouter(); final JSlider stepSize = new JSlider(1, 50, layouter.getStepSize()); final JSlider forceSize = new JSlider(10, 200, layouter.getForceSize()); stepSize.addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent e) { layouter.setStepSize(stepSize.getValue()); } }); forceSize.addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent e) { layouter.setForceSize(forceSize.getValue()); } }); addInternalFrameListener(new InternalFrameAdapter(){ public void internalFrameClosing(InternalFrameEvent e) { DialogBuilder.disposeTopoAutoLayout(); } }); this.controlPane.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); //this.addSlider("间隔大小:", stepSize); //this.addSlider("扩散大小:", forceSize); //this.controlPane.add(overview); //this.controlPane.add(attachment); this.addRadioButton("环形布局", TWaverConst.LAYOUT_CIRCULAR); this.addRadioButton("对称布局", TWaverConst.LAYOUT_SYMMETRIC); this.addRadioButton("树形布局", TWaverConst.LAYOUT_TREE); this.addRadioButton("等级布局", TWaverConst.LAYOUT_HIERARCHIC); this.addRadioButton("向东布局", TWaverConst.LAYOUT_EAST); this.addRadioButton("向西布局", TWaverConst.LAYOUT_WEST); //小视图 OverviewPane overview = new OverviewPane(network); overview.setUpdateInterval(50); overview.setPreferredSize(new Dimension(100, 100)); this.controlPane.add(overview); } /** * 添加单选布局按钮到面板 * @param label 按钮文本 * @param type 布局类型 */ private void addRadioButton(String label, final int type){ final JRadioButton button = new JRadioButton(label); this.group.add(button); this.controlPane.add(button); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { network.doLayout(type); currentRadioButton = button; } }); } public String getName() { return name; } public void setName(String name) { TopoAutoLayout.name = name; } }