001: package org.zilonis.tool.ui;
002:
003: import java.awt.BorderLayout;
004: import java.awt.Color;
005: import java.awt.Container;
006: import java.awt.Graphics;
007: import java.awt.Graphics2D;
008: import java.awt.GridLayout;
009: import java.awt.Rectangle;
010: import java.awt.image.BufferedImage;
011: import java.io.IOException;
012: import java.text.DecimalFormat;
013:
014: import javax.imageio.ImageIO;
015: import javax.swing.Box;
016: import javax.swing.JButton;
017: import javax.swing.JLabel;
018: import javax.swing.JPanel;
019: import javax.swing.JScrollPane;
020: import javax.swing.JTextField;
021:
022: import org.jdesktop.animation.timing.Animator;
023: import org.jdesktop.animation.timing.TimingTarget;
024:
025: import org.jdesktop.animation.timing.interpolation.KeyFrames;
026: import org.jdesktop.animation.timing.interpolation.KeyValues;
027: import org.jdesktop.animation.timing.interpolation.PropertySetter;
028: import org.jdesktop.layout.GroupLayout.ParallelGroup;
029: import org.jdesktop.layout.GroupLayout.SequentialGroup;
030: import org.jdesktop.swingx.JXPanel;
031: import org.zilonis.scope.Scope;
032: import org.zilonis.symbol.Triplet;
033: import org.zilonis.tool.ext.aerith.ui.AerithPanelPainter;
034:
035: public class AddFactPanel extends JXPanel {
036: private static final Rectangle DELETE_ICON_BOUNDS = new Rectangle(
037: 40, 5, 11, 11);
038:
039: private WMEMetaData wmeTemplate;
040:
041: private JTextField textField[];
042:
043: private AerithPanelPainter aerithPanelPainter1;
044:
045: private javax.swing.JButton closeButton;
046:
047: private javax.swing.JButton saveButton;
048:
049: private AnalysisToolParserEventHandler analysisToolParserEventHandler;
050:
051: private static final DecimalFormat format = new DecimalFormat(
052: "##.00000");
053:
054: public AddFactPanel(
055: WMEMetaData wmeTemplate,
056: AnalysisToolParserEventHandler analysisToolParserEventHandler) {
057: this .wmeTemplate = wmeTemplate;
058: this .analysisToolParserEventHandler = analysisToolParserEventHandler;
059: initComponents();
060: }
061:
062: private void initComponents() {
063: JLabel titleLabel = new JLabel("Add Fact");
064: titleLabel.setFont(new java.awt.Font("Tahoma", 1, 20));
065: titleLabel.setForeground(new java.awt.Color(255, 255, 255));
066: titleLabel.setBorder(javax.swing.BorderFactory
067: .createEmptyBorder(2, 2, 2, 2));
068: JLabel attributeLabel[] = new JLabel[wmeTemplate.getAttribute().length];
069: textField = new JTextField[wmeTemplate.getAttribute().length];
070: for (int i = 0; i < attributeLabel.length; ++i) {
071: attributeLabel[i] = new JLabel();
072: attributeLabel[i]
073: .setFont(new java.awt.Font("Tahoma", 1, 20));
074: attributeLabel[i].setForeground(new java.awt.Color(255,
075: 255, 255));
076: attributeLabel[i].setText(wmeTemplate.getAttribute()[i]);
077: attributeLabel[i].setBorder(javax.swing.BorderFactory
078: .createEmptyBorder(2, 2, 2, 2));
079: textField[i] = new JTextField();
080: }
081: aerithPanelPainter1 = new AerithPanelPainter();
082: closeButton = new javax.swing.JButton();
083: saveButton = new ActionButton("Save");
084: setBackground(new java.awt.Color(0, 0, 0));
085: setBackgroundPainter(aerithPanelPainter1);
086: closeButton.setIcon(new javax.swing.ImageIcon(getClass()
087: .getResource("/resources/photos/button-close.png")));
088: closeButton.setToolTipText("Close editor");
089: closeButton.setBorder(null);
090: closeButton.setBorderPainted(false);
091: closeButton.setContentAreaFilled(false);
092: closeButton.setFocusPainted(false);
093: closeButton.setFocusable(false);
094: closeButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
095: closeButton.setPressedIcon(new javax.swing.ImageIcon(getClass()
096: .getResource(
097: "/resources/photos/button-close-pressed.png")));
098: closeButton.setRolloverIcon(new javax.swing.ImageIcon(
099: getClass().getResource(
100: "/resources/photos/button-close-over.png")));
101: closeButton
102: .addActionListener(new java.awt.event.ActionListener() {
103: public void actionPerformed(
104: java.awt.event.ActionEvent evt) {
105: closeActionPerformed(evt);
106: }
107: });
108:
109: saveButton
110: .addActionListener(new java.awt.event.ActionListener() {
111: public void actionPerformed(
112: java.awt.event.ActionEvent evt) {
113: saveActionPerformed(evt);
114: }
115: });
116:
117: JPanel panel = new JPanel();
118: panel.setOpaque(false);
119: panel.setBorder(javax.swing.BorderFactory.createEmptyBorder(2,
120: 2, 2, 2));
121: panel.setLayout(new GridLayout(
122: wmeTemplate.getAttribute().length, 2, 6, 6));
123: int i = 0;
124: for (JLabel attribute : attributeLabel) {
125: panel.add(attribute);
126: panel.add(textField[i++]);
127: }
128: setLayout(new BorderLayout());
129: JLabel clazzLabel = new JLabel("Class: "
130: + wmeTemplate.getClazz());
131: clazzLabel.setFont(new java.awt.Font("Tahoma", 1, 22));
132: clazzLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT);
133: clazzLabel.setForeground(new java.awt.Color(255, 255, 255));
134: clazzLabel.setBorder(javax.swing.BorderFactory
135: .createEmptyBorder(2, 2, 2, 2));
136: JPanel clazzPanel = new JPanel();
137: clazzPanel.setOpaque(false);
138: clazzPanel.add(clazzLabel);
139: JPanel titlePanel = new JPanel();
140: titlePanel.setBorder(javax.swing.BorderFactory
141: .createEmptyBorder(2, 2, 2, 2));
142: titlePanel.setOpaque(false);
143: titlePanel.setLayout(new BorderLayout());
144: titlePanel.add(BorderLayout.WEST, titleLabel);
145: JPanel titleButtons = new JPanel();
146: titleButtons.setOpaque(false);
147: titleButtons.add(closeButton);
148: titlePanel.add(BorderLayout.EAST, titleButtons);
149: JPanel north = new JPanel();
150: north.setOpaque(false);
151: north.setLayout(new BorderLayout());
152: north.add(BorderLayout.NORTH, titlePanel);
153: north.add(BorderLayout.SOUTH, clazzPanel);
154: add(BorderLayout.NORTH, north);
155: add(BorderLayout.CENTER, panel);
156: JPanel buttonPanel = new JPanel();
157: buttonPanel.setOpaque(false);
158: buttonPanel.add(saveButton);
159: add(BorderLayout.WEST, Box.createHorizontalStrut(10));
160: add(BorderLayout.EAST, Box.createHorizontalStrut(10));
161: add(BorderLayout.SOUTH, buttonPanel);
162: }
163:
164: public static Animator createFadeInAnimation(JXPanel panel) {
165: return createFadeAnimation(panel, 0.01f, .99f);
166: }
167:
168: public static Animator createFadeOutAnimation(JXPanel panel) {
169: return createFadeAnimation(panel, 0.99f, .01f);
170: }
171:
172: public static Animator createFadeAnimation(JPanel panel,
173: float start, float end) {
174: KeyValues keyValues = KeyValues
175: .create(new Float[] { start, end });
176: KeyFrames keyFrames = new KeyFrames(keyValues);
177: Animator animator = PropertySetter.createAnimator(400, panel,
178: "alpha", keyFrames);
179: animator.setAcceleration(0.7f);
180: animator.setDeceleration(0.3f);
181: return animator;
182: }
183:
184: private void closeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed
185: final Container parent = this .getParent();
186: // waypoint.setName(name.getText());
187: // waypoint.setTitle(title.getText());
188: // waypoint.setSummary(summary.getText());
189: Animator fadeOut = createFadeOutAnimation(this );
190: fadeOut.addTarget(new TimingTarget() {
191: public void begin() {
192: }
193:
194: public void repeat() {
195:
196: }
197:
198: public void end() {
199: // parent.remove(WaypointEditPanel.this);
200: parent.repaint();
201: TransitionManager.killOverlay();
202: }
203:
204: public void timingEvent(float f) {
205: }
206: });
207: fadeOut.start();
208: }// GEN-LAST:event_jButton1ActionPerformed
209:
210: private void saveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_jButton1ActionPerformed
211: String attributes[] = wmeTemplate.getAttribute();
212: Scope scope = analysisToolParserEventHandler.getScope();
213: String id = "" + scope.getNextId();
214: Triplet triplet = new Triplet(id, "clazz", wmeTemplate
215: .getClazz());
216: analysisToolParserEventHandler.assertTriplet(triplet);
217: for (int i = 0; i < attributes.length; ++i) {
218: triplet = new Triplet(id, attributes[i], textField[i]
219: .getText().trim());
220: analysisToolParserEventHandler.assertTriplet(triplet);
221: }
222:
223: final Container parent = this .getParent();
224: // waypoint.setName(name.getText());
225: // waypoint.setTitle(title.getText());
226: // waypoint.setSummary(summary.getText());
227: Animator fadeOut = createFadeOutAnimation(this );
228: fadeOut.addTarget(new TimingTarget() {
229: public void begin() {
230: }
231:
232: public void repeat() {
233:
234: }
235:
236: @Override
237: public void end() {
238: // parent.remove(WaypointEditPanel.this);
239: parent.repaint();
240: TransitionManager.killOverlay();
241: }
242:
243: public void timingEvent(float f) {
244: }
245: });
246: fadeOut.start();
247: }// GEN-LAST:event_jButton1ActionPerformed
248:
249: }
|