1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-07 18:30:55 +03:00
occt/samples/java/java/SampleTopologyBuildingPanel.java
2012-03-05 19:23:40 +04:00

450 lines
14 KiB
Java
Executable File

//Title: OpenCASCADE Samples
//Version:
//Copyright: Copyright (c) 1999
//Author: User Interface Group (Nizhny Novgorod)
//Company: Matra Datavision
//Description:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import jcas.Standard_CString;
import CASCADESamplesJni.*;
import SamplesTopologyJni.*;
import util.*;
public class SampleTopologyBuildingPanel extends SamplePanel
implements ActionListener,
MouseListener,
MouseMotionListener
{
//-----------------------------------------------------------//
// Resources
//-----------------------------------------------------------//
static protected ResourceBundle resGui =
ResourceBundle.getBundle("SampleTopologyBuilding");
static protected ImageIcon imgVertex = new ImageIcon(resGui.getString("Icon-Vertex"));
static protected ImageIcon imgEdge = new ImageIcon(resGui.getString("Icon-Edge"));
static protected ImageIcon imgWire = new ImageIcon(resGui.getString("Icon-Wire"));
static protected ImageIcon imgFace = new ImageIcon(resGui.getString("Icon-Face"));
static protected ImageIcon imgShell = new ImageIcon(resGui.getString("Icon-Shell"));
static protected ImageIcon imgCompound = new ImageIcon(resGui.getString("Icon-Compound"));
static protected ImageIcon imgSewing = new ImageIcon(resGui.getString("Icon-Sewing"));
static protected ImageIcon imgBuilder = new ImageIcon(resGui.getString("Icon-Builder"));
static protected ImageIcon imgGeometry = new ImageIcon(resGui.getString("Icon-Geometry"));
static protected ImageIcon imgExplorer = new ImageIcon(resGui.getString("Icon-Explorer"));
//-----------------------------------------------------------//
// Components
//-----------------------------------------------------------//
private ViewPanel myView3d;
private static V3d_Viewer myViewer3d = null;
private static AIS_InteractiveContext myAISContext = null;
private int startX = 0, startY = 0;
private boolean Dragged = false;
//-----------------------------------------------------------//
// External access
//-----------------------------------------------------------//
public static V3d_Viewer getViewer3d()
{
return myViewer3d;
}
public static AIS_InteractiveContext getAISContext()
{
return myAISContext;
}
//=======================================================================//
// Constructor //
//=======================================================================//
public SampleTopologyBuildingPanel()
{
// 3D Initialization
//------------------------------------------
myViewer3d.SetDefaultLights();
myViewer3d.SetLightOn();
if (myAISContext == null)
{
myAISContext = new AIS_InteractiveContext(myViewer3d);
myAISContext.SetDisplayMode(AIS_DisplayMode.AIS_Shaded, false);
}
}
//-----------------------------------------------------------------------//
public JPanel createViewPanel()
{
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new GridBagLayout());
mainPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 0));
// Viewer 3D
//------------------------------------------
myViewer3d = SamplesTopologyPackage.CreateViewer("TopologyBuilding");
myView3d = new ViewPanel() {
public ViewCanvas createViewPort()
{
return new CASCADEView3d(SampleTopologyBuildingPanel.getViewer3d()) {
public void setWindow3d(V3d_View view, int hiwin, int lowin) {
SamplesTopologyPackage.SetWindow(view, hiwin, lowin);
}
};
}
};
myView3d.addMouseListener(this);
myView3d.addMouseMotionListener(this);
// Layout
//------------------------------------------
mainPanel.add(myView3d, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
return mainPanel;
}
//-----------------------------------------------------------------------//
public Component createToolbar()
{
JToolBar tools = (JToolBar) super.createToolbar();
ButtonGroup group = new ButtonGroup();
Insets margin = new Insets(1, 1, 1, 1);
JToggleButton button;
button = new HeavyToggleButton(imgVertex, false);
button.setToolTipText(resGui.getString("TT-Vertex"));
button.setActionCommand("Vertex");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgEdge, false);
button.setToolTipText(resGui.getString("TT-Edge"));
button.setActionCommand("Edge");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgWire, false);
button.setToolTipText(resGui.getString("TT-Wire"));
button.setActionCommand("Wire");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgFace, false);
button.setToolTipText(resGui.getString("TT-Face"));
button.setActionCommand("Face");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgShell, false);
button.setToolTipText(resGui.getString("TT-Shell"));
button.setActionCommand("Shell");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgCompound, false);
button.setToolTipText(resGui.getString("TT-Compound"));
button.setActionCommand("Compound");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
tools.addSeparator();;
button = new HeavyToggleButton(imgSewing, false);
button.setToolTipText(resGui.getString("TT-Sewing"));
button.setActionCommand("Sewing");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgBuilder, false);
button.setToolTipText(resGui.getString("TT-Builder"));
button.setActionCommand("Builder");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgGeometry, false);
button.setToolTipText(resGui.getString("TT-Geometry"));
button.setActionCommand("Geometry");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
button = new HeavyToggleButton(imgExplorer, false);
button.setToolTipText(resGui.getString("TT-Explorer"));
button.setActionCommand("Explorer");
button.addActionListener(this);
button.setMargin(margin);
group.add(button);
tools.add(button);
return tools;
}
//=======================================================================//
// Actions //
//=======================================================================//
public void postProcess(TCollection_AsciiString message, String title)
{
myView3d.getViewPort().FitAll();
String text = message.ToCString().GetValue();
text += "\n-------------------- END ----------------------\n";
traceMessage(text, title);
}
//=======================================================================//
// Tests
//=======================================================================//
public void onVertex()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Vertex(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Vertex"));
}
//=======================================================================//
public void onEdge()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Edge(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Edge"));
}
//=======================================================================//
public void onWire()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Wire(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Wire"));
}
//=======================================================================//
public void onFace()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Face(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Face"));
}
//=======================================================================//
public void onShell()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Shell(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Shell"));
}
//=======================================================================//
public void onCompound()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Compound(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Compound"));
}
//=======================================================================//
public void onSewing()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Sewing(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Sewing"));
}
//=======================================================================//
public void onBuilder()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Builder(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Builder"));
}
//=======================================================================//
public void onGeometry()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Geometry(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Geometry"));
}
//=======================================================================//
public void onExplorer()
{
TCollection_AsciiString message = new TCollection_AsciiString();
SamplesTopologyPackage.Explorer(myAISContext, message);
postProcess(message, resGui.getString("Dlg-Explorer"));
}
//=======================================================================//
// ActionListener interface
//=======================================================================//
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand();
if (command.equals("Vertex")) onVertex();
else if (command.equals("Edge")) onEdge();
else if (command.equals("Wire")) onWire();
else if (command.equals("Face")) onFace();
else if (command.equals("Shell")) onShell();
else if (command.equals("Compound")) onCompound();
else if (command.equals("Sewing")) onSewing();
else if (command.equals("Builder")) onBuilder();
else if (command.equals("Geometry")) onGeometry();
else if (command.equals("Explorer")) onExplorer();
}
//=======================================================================//
// MouseListener interface
//=======================================================================//
public void mouseClicked(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
if (SwingUtilities.isLeftMouseButton(e))
{
startX = e.getX();
startY = e.getY();
Object src = e.getSource();
if (src == myView3d)
{
V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
if (view3d != null)
myAISContext.MoveTo(startX, startY, view3d);
}
}
else if (SwingUtilities.isRightMouseButton(e))
{
if (e.getSource() == myView3d)
{
PopupMenu defPopup = myView3d.getDefaultPopup();
myView3d.add(defPopup);
defPopup.show(myView3d, e.getX(), e.getY() + 30);
}
}
}
public void mouseReleased(MouseEvent e)
{
if (SwingUtilities.isLeftMouseButton(e))
{
Object src = e.getSource();
if (Dragged)
{
if (src == myView3d)
{
V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
if (view3d != null)
{
if (e.isShiftDown())
myAISContext.ShiftSelect(startX, startY, e.getX(), e.getY(), view3d, true);
else
myAISContext.Select(startX, startY, e.getX(), e.getY(), view3d, true);
}
}
}
else
{
if (src == myView3d)
{
if (e.isShiftDown())
myAISContext.ShiftSelect(true);
else
myAISContext.Select(true);
}
}
Dragged = false;
}
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
//=======================================================================//
// MouseMotionListener interface
//=======================================================================//
public void mouseDragged(MouseEvent e)
{
if (SwingUtilities.isLeftMouseButton(e) &&
e.getSource() == myView3d)
Dragged = true;
}
public void mouseMoved(MouseEvent e)
{
Object src = e.getSource();
if (src == myView3d)
{
V3d_View view3d = ((CASCADEView3d) myView3d.getViewPort()).getView();
if (myAISContext != null && view3d != null)
myAISContext.MoveTo(e.getX(), e.getY(), view3d);
}
}
}