Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / util / TracePanel.java
1
2 //Title:        OpenCASCADE Samples
3 //Version:      
4 //Copyright:    Copyright (c) 1999
5 //Author:       User Interface group
6 //Company:      Matra Datavision
7 //Description:
8 package util;
9
10 import java.awt.*;
11 import java.awt.event.*;
12 import javax.swing.*;
13 import javax.swing.border.*;
14 import java.util.*;
15 import java.awt.datatransfer.*;
16
17
18 public class TracePanel extends JPanel implements ActionListener
19
20 {
21   //-----------------------------------------------------------//
22   // GUI components
23   //-----------------------------------------------------------//
24   JLabel titleLbl = new JLabel();
25   JEditorPane traceTxt = new JEditorPane();
26   static private Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
27
28   TextArea copyArea = new TextArea("",1,1,TextArea.SCROLLBARS_NONE);
29
30 //=======================================================================//
31 // Construction
32 //=======================================================================//
33   public TracePanel()
34   {
35     try
36     {
37       jbInit();
38     }
39     catch(Exception ex)
40     {
41       ex.printStackTrace();
42     }
43   }
44
45   void jbInit() throws Exception
46   {
47     setLayout(new BorderLayout());
48
49     titleLbl.setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 10));
50     add(titleLbl, BorderLayout.NORTH);
51
52     JPanel textPanel = new JPanel() {
53       public Dimension getPreferredSize() {
54         return new Dimension(300, super.getPreferredSize().height);
55         }
56       };
57     textPanel.setBorder(BorderFactory.createCompoundBorder(
58                         BorderFactory.createEmptyBorder(10, 10, 10, 10),
59                         BorderFactory.createLoweredBevelBorder()));
60     textPanel.setLayout(new GridBagLayout());
61
62     traceTxt.setEditable(false);
63     traceTxt.setAutoscrolls(false);
64     JScrollPane scrollPane = new JScrollPane(traceTxt);
65
66     textPanel.add(scrollPane, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
67             GridBagConstraints.CENTER, GridBagConstraints.BOTH,
68             new Insets(0, 0, 0, 0), 0, 0));
69     add(textPanel, BorderLayout.CENTER);
70
71     JPanel controlPanel = new JPanel();
72     controlPanel.setLayout(new GridBagLayout());
73
74     JButton copySel = new JButton("Copy Selection To Clipboard");
75     copySel.addActionListener(this);
76     copySel.setActionCommand("CopySelection");
77     controlPanel.add(copySel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
78             GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
79             new Insets(5, 10, 5, 10), 0, 0));
80
81     JButton copyAll = new JButton("Copy All To Clipboard");
82     copyAll.addActionListener(this);
83     copyAll.setActionCommand("CopyAll");
84     controlPanel.add(copyAll, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
85             GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
86             new Insets(5, 10, 5, 10), 0, 0));
87
88     copyArea.setVisible(false);
89     copyArea.setEnabled(false);
90     controlPanel.add(copyArea);
91
92     add(controlPanel, BorderLayout.SOUTH);
93   }
94
95
96   public Dimension getMinimumSize()
97   {
98     return new Dimension(400, super.getMinimumSize().height);
99   }
100
101
102
103 //=======================================================================//
104 // Commands
105 //=======================================================================//
106   private void copySelection()
107   {
108     String text = traceTxt.getSelectedText();
109     if (text == null)
110       return;
111     StringSelection clipString = new StringSelection(text);
112     clip.setContents(clipString, clipString);
113
114     // Add selected text to the copyArea
115     copyArea.setText(text);
116     copyArea.selectAll();
117   }
118
119   private void copyAll()
120   {
121     String text = traceTxt.getText();
122     if (text == null)
123       return;
124     StringSelection clipString = new StringSelection(text);
125     clip.setContents(clipString, clipString);
126               
127     // Add selected text to the copyArea
128     copyArea.setText(text);
129     copyArea.selectAll();
130   }
131
132   public void setText(String text)
133   {
134     traceTxt.setText(text);
135     traceTxt.setCaretPosition(0);
136     validate();
137   }
138
139   public void setTitle(String text)
140   {
141     titleLbl.setText(text);
142     validate();
143   }
144
145
146 //=======================================================================//
147 // Action listener interface
148 //=======================================================================//
149   public void actionPerformed(ActionEvent e)
150   {
151     String nameAction = e.getActionCommand();
152     if (nameAction.equals("CopySelection"))
153       copySelection();
154     else if (nameAction.equals("CopyAll"))
155       copyAll();
156   }
157
158 }
159