/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: StructureEditor.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.gui.old;
import javax.swing.*;
import com.uwyn.rife.config.Config;
import com.uwyn.rife.swing.Images;
import com.uwyn.rife.swing.JBorderlessButton;
import com.uwyn.rife.swing.JBorderlessToggleButton;
import com.uwyn.rife.tools.Localization;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class StructureEditor extends JPanel implements ActionListener, MouseListener
{
private JScrollPane mScrollPane = null;
private JBorderlessButton mStructurePanelPanButton = null;
private StructurePanelPanWindow mStructurePanelPanWindow = null;
private JPanel mStructureToolbar = null;
private ButtonGroup mStructureToolbarButtonGroup = null;
private JBorderlessToggleButton mStructureToolbarSelectionButton = null;
private JBorderlessToggleButton mStructureToolbarZoomButton = null;
private JBorderlessToggleButton mStructureToolbarElementButton = null;
private JBorderlessToggleButton mStructureToolbarConnectorButton = null;
private JBorderlessToggleButton mStructureToolbarGridShowButton = null;
private JBorderlessToggleButton mStructureToolbarGridSnapButton = null;
private StructurePanel mStructurePanel = null;
public StructureEditor()
{
super();
mStructureToolbarButtonGroup = new ButtonGroup();
mStructureToolbarSelectionButton = new JBorderlessToggleButton(Images.getRepInstance().getImageIcon("buttons/selection.gif"));
mStructureToolbarSelectionButton.setBorder(null);
mStructureToolbarSelectionButton.setSelected(true);
mStructureToolbarSelectionButton.addActionListener(this);
mStructureToolbarSelectionButton.setToolTipText(Localization.getString("rife.tooltip.tool.selection"));
mStructureToolbarButtonGroup.add(mStructureToolbarSelectionButton);
mStructureToolbarZoomButton = new JBorderlessToggleButton(Images.getRepInstance().getImageIcon("buttons/zoom.gif"));
mStructureToolbarZoomButton.setBorder(null);
mStructureToolbarZoomButton.addActionListener(this);
mStructureToolbarZoomButton.addMouseListener(this);
mStructureToolbarZoomButton.setToolTipText(Localization.getString("rife.tooltip.tool.zoom"));
mStructureToolbarButtonGroup.add(mStructureToolbarZoomButton);
mStructureToolbarElementButton = new JBorderlessToggleButton(Images.getRepInstance().getImageIcon("buttons/element.gif"));
mStructureToolbarElementButton.setBorder(null);
mStructureToolbarElementButton.addActionListener(this);
mStructureToolbarElementButton.setToolTipText(Localization.getString("rife.tooltip.tool.element"));
mStructureToolbarButtonGroup.add(mStructureToolbarElementButton);
mStructureToolbarConnectorButton = new JBorderlessToggleButton(Images.getRepInstance().getImageIcon("buttons/connector.gif"));
mStructureToolbarConnectorButton.setBorder(null);
mStructureToolbarConnectorButton.addActionListener(this);
mStructureToolbarConnectorButton.setToolTipText(Localization.getString("rife.tooltip.tool.connector"));
mStructureToolbarButtonGroup.add(mStructureToolbarConnectorButton);
mStructureToolbarGridShowButton = new JBorderlessToggleButton(Images.getRepInstance().getImageIcon("buttons/gridshow.gif"));
mStructureToolbarGridShowButton.setBorder(null);
mStructureToolbarGridShowButton.addActionListener(this);
mStructureToolbarGridShowButton.setToolTipText(Localization.getString("rife.tooltip.tool.gridshow"));
mStructureToolbarGridShowButton.setSelected(Config.getRepInstance().getBool("GRID_SHOW"));
mStructureToolbarGridSnapButton = new JBorderlessToggleButton(Images.getRepInstance().getImageIcon("buttons/gridsnap.gif"));
mStructureToolbarGridSnapButton.setBorder(null);
mStructureToolbarGridSnapButton.addActionListener(this);
mStructureToolbarGridSnapButton.setToolTipText(Localization.getString("rife.tooltip.tool.gridsnap"));
mStructureToolbarGridSnapButton.setSelected(Config.getRepInstance().getBool("GRID_SNAP"));
mStructureToolbar = new JPanel();
mStructureToolbar.setLayout(new GridBagLayout());
mStructureToolbar.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.weightx = 1;
constraints.weighty = 0;
constraints.anchor = GridBagConstraints.NORTH;
constraints.fill = GridBagConstraints.BOTH;
constraints.insets = new Insets(0, 0, 0, 0);
mStructureToolbar.add(mStructureToolbarSelectionButton, constraints);
constraints.gridy = 1;
mStructureToolbar.add(new JSeparator(SwingConstants.HORIZONTAL), constraints);
constraints.gridy = 2;
mStructureToolbar.add(mStructureToolbarZoomButton, constraints);
constraints.gridy = 3;
mStructureToolbar.add(new JSeparator(SwingConstants.HORIZONTAL), constraints);
constraints.gridy = 4;
mStructureToolbar.add(mStructureToolbarElementButton, constraints);
constraints.gridy = 5;
mStructureToolbar.add(mStructureToolbarConnectorButton, constraints);
constraints.gridy = 6;
mStructureToolbar.add(new JSeparator(SwingConstants.HORIZONTAL), constraints);
constraints.gridy = 7;
mStructureToolbar.add(mStructureToolbarGridShowButton, constraints);
constraints.gridy = 8;
constraints.insets = new Insets(1, 0, 0, 0);
mStructureToolbar.add(mStructureToolbarGridSnapButton, constraints);
constraints.gridy = 9;
constraints.weighty = 1;
constraints.insets = new Insets(0, 0, 0, 0);
mStructureToolbar.add(new JPanel(), constraints);
mScrollPane = new JScrollPane();
mScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
mScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
mStructurePanelPanButton = new JBorderlessButton(Images.getRepInstance().getImageIcon("buttons/pan.gif"));
mStructurePanelPanButton.setDefaultCapable(false);
mStructurePanelPanButton.setBorder(null);
mStructurePanelPanButton.addMouseListener(this);
mStructurePanelPanButton.setToolTipText(Localization.getString("rife.tooltip.tool.pan"));
mScrollPane.setCorner(JScrollPane.LOWER_RIGHT_CORNER, mStructurePanelPanButton);
mStructurePanel = new StructurePanel(mScrollPane);
mStructurePanel.setVisible(true);
mScrollPane.setViewportView(mStructurePanel);
mScrollPane.setVisible(true);
mScrollPane.getViewport().setScrollMode(JViewport.BLIT_SCROLL_MODE);
mStructureToolbar.setVisible(true);
setLayout(new BorderLayout());
add(mStructureToolbar, BorderLayout.WEST);
add(mScrollPane, BorderLayout.CENTER);
for(int i = 1; i <= 5; i++)
{
mStructurePanel.addElement("test_element_"+i);
}
}
public StructurePanel getStructurePanel()
{
return mStructurePanel;
}
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if(source == mStructureToolbarSelectionButton)
{
mStructurePanel.setActiveTool(StructurePanel.SELECTION_TOOL);
}
else if(source == mStructureToolbarZoomButton)
{
mStructurePanel.setActiveTool(StructurePanel.ZOOMIN_TOOL);
}
else if(source == mStructureToolbarElementButton)
{
mStructurePanel.setActiveTool(StructurePanel.ELEMENT_TOOL);
}
else if(source == mStructureToolbarConnectorButton)
{
mStructurePanel.setActiveTool(StructurePanel.CONNECTOR_TOOL);
}
else if(source == mStructureToolbarGridShowButton)
{
Config.getRepInstance().setParameter("GRID_SHOW", ""+mStructureToolbarGridShowButton.isSelected());
mStructurePanel.repaint();
}
else if(source == mStructureToolbarGridSnapButton)
{
Config.getRepInstance().setParameter("GRID_SNAP", ""+mStructureToolbarGridSnapButton.isSelected());
}
}
public void mouseClicked(MouseEvent e)
{
Object source = e.getSource();
if(source == mStructureToolbarZoomButton)
{
if(e.getClickCount() == 2)
{
mStructurePanel.changeZoom(1/mStructurePanel.getScaleFactor());
}
}
}
public void mousePressed(MouseEvent e)
{
Object source = e.getSource();
if(source == mStructurePanelPanButton &&
((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0))
{
mStructurePanel.setScrollActive(true);
mStructurePanel.repaint();
mStructurePanelPanWindow = new StructurePanelPanWindow(mStructurePanel, mStructurePanelPanButton, e.getPoint());
mStructurePanelPanButton.addMouseMotionListener(mStructurePanelPanWindow);
}
}
public void mouseReleased(MouseEvent e)
{
Object source = e.getSource();
if(source == mStructurePanelPanButton &&
((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0))
{
mStructurePanelPanButton.removeMouseMotionListener(mStructurePanelPanWindow);
mStructurePanelPanWindow.setVisible(false);
mStructurePanelPanWindow.dispose();
mStructurePanelPanWindow = null;
mStructurePanel.setScrollActive(false);
mStructurePanel.repaint();
}
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
}