diff --git a/pmd/src/net/sourceforge/pmd/util/designer/CreateXMLRulePanel.java b/pmd/src/net/sourceforge/pmd/util/designer/CreateXMLRulePanel.java
new file mode 100644
index 0000000000..4ebc729d40
--- /dev/null
+++ b/pmd/src/net/sourceforge/pmd/util/designer/CreateXMLRulePanel.java
@@ -0,0 +1,140 @@
+package net.sourceforge.pmd.util.designer;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import net.sourceforge.pmd.PMD;
+
+/**
+ * This class is responsible for creating the
+ * contentpanel for the Create Rule XML Frame.
+ */
+public class CreateXMLRulePanel extends JPanel implements ActionListener{
+
+ private static final JTextField rulenameField = new JTextField(30);
+ private static final JTextField rulemsgField = new JTextField(30);
+ private static final JTextArea ruledescField = new JTextArea(5,30);
+ private static final JTextArea ruleXMLArea = new JTextArea(30, 30);
+ private JTextArea xpathQueryArea = new JTextArea();
+ private CodeEditorTextPane codeEditorPane = new CodeEditorTextPane();
+
+ public CreateXMLRulePanel(JTextArea xpathQueryArea, CodeEditorTextPane codeEditorPane){
+ super();
+ this.xpathQueryArea = xpathQueryArea;
+ this.codeEditorPane = codeEditorPane;
+ GridBagConstraints gbc = new GridBagConstraints();
+ // We use a gridbaglayout for a nice and sturdy look and feel
+ GridBagLayout gbl = new GridBagLayout();
+ setLayout(gbl);
+
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.fill = GridBagConstraints.NONE;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.5;
+ JLabel rulenameLabel = new JLabel("Rule name : ");
+ gbl.setConstraints(rulenameLabel, gbc);
+ add(rulenameLabel);
+ gbc.weightx = 0.5;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.gridx = 1;
+ gbl.setConstraints(rulenameField, gbc);
+ add(rulenameField);
+
+ gbc.gridx = 0;
+ gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.5;
+ JLabel rulemsgLabel = new JLabel("Rule msg : ");
+ gbl.setConstraints(rulemsgLabel, gbc);
+ add(rulemsgLabel);
+ gbc.gridx = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.5;
+ gbl.setConstraints(rulemsgField, gbc);
+ add(rulemsgField);
+
+ gbc.gridx = 0;
+ gbc.gridy = 2;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.5;
+ JLabel ruledescLabel = new JLabel("Rule desc : ");
+ gbl.setConstraints(ruledescLabel,gbc);
+ add(ruledescLabel);
+ gbc.gridx = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.5;
+ gbl.setConstraints(ruledescField,gbc);
+ add(ruledescField);
+
+ gbc.gridx = 0;
+ gbc.gridy = 3;
+ gbc.gridwidth = 2;
+ gbc.anchor = GridBagConstraints.NORTH;
+ JButton createRuleBtn = new JButton("Create rule XML");
+ createRuleBtn.addActionListener(this);
+ gbl.setConstraints(createRuleBtn, gbc);
+ add(createRuleBtn);
+
+ gbc.gridx = 0;
+ gbc.gridy = 4;
+ gbc.anchor = GridBagConstraints.NORTH;
+ gbc.fill = GridBagConstraints.BOTH;
+ gbc.weightx = 1.0;
+ gbc.weighty = 1.0;
+ JScrollPane ruleXMLPane = new JScrollPane(ruleXMLArea);
+ gbl.setConstraints(ruleXMLPane, gbc);
+ add(ruleXMLPane);
+
+ repaint();
+ }
+
+
+ /**
+ * We let our class implement the ActionListener interface
+ * and use it to generate the xml code when the user presses
+ * the "Create rule XML" button.
+ *
+ */
+ public void actionPerformed(ActionEvent exception) {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("" + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append(" " + ruledescField.getText() + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ if (xpathQueryArea.getText().length() != 0) {
+ buffer.append(" " + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append("" + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ }
+ buffer.append(" 3" + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append("" + PMD.EOL);
+ buffer.append(" " + PMD.EOL);
+ buffer.append("" + PMD.EOL);
+
+ ruleXMLArea.setText(buffer.toString());
+ repaint();
+ }
+
+}
+
diff --git a/pmd/src/net/sourceforge/pmd/util/designer/Designer.java b/pmd/src/net/sourceforge/pmd/util/designer/Designer.java
index 7001630f33..99e19f2409 100644
--- a/pmd/src/net/sourceforge/pmd/util/designer/Designer.java
+++ b/pmd/src/net/sourceforge/pmd/util/designer/Designer.java
@@ -48,6 +48,7 @@ import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.io.StringReader;
@@ -457,13 +458,12 @@ public class Designer implements ClipboardOwner {
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
- frame.setSize(screenHeight - (screenHeight / 4), screenHeight - (screenHeight / 4));
- frame.setLocation((screenWidth / 2) - frame.getWidth() / 2, (screenHeight / 2) - frame.getHeight() / 2);
- frame.setVisible(true);
frame.pack();
- frame.show();
+ frame.setSize((screenWidth*3/4),(screenHeight*3/4));
+ frame.setLocation((screenWidth -frame.getWidth()) / 2, (screenHeight - frame.getHeight()) / 2);
+ frame.setVisible(true);
resultsSplitPane.setDividerLocation(resultsSplitPane.getMaximumDividerLocation() - (resultsSplitPane.getMaximumDividerLocation() / 2));
- //containerSplitPane.setDividerLocation(containerSplitPane.getMaximumDividerLocation() / 2);
+ containerSplitPane.setDividerLocation(containerSplitPane.getMaximumDividerLocation() / 2);
}
private JMenuBar createMenuBar() {
@@ -501,82 +501,24 @@ public class Designer implements ClipboardOwner {
}
private void createRuleXML() {
- JPanel rulenamePanel = new JPanel();
- rulenamePanel.setLayout(new FlowLayout());
- rulenamePanel.add(new JLabel("Rule name"));
- final JTextField rulenameField = new JTextField(30);
- rulenamePanel.add(rulenameField);
- JPanel rulemsgPanel = new JPanel();
- rulemsgPanel.setLayout(new FlowLayout());
- rulemsgPanel.add(new JLabel("Rule msg"));
- final JTextField rulemsgField = new JTextField(60);
- rulemsgPanel.add(rulemsgField);
- JPanel ruledescPanel = new JPanel();
- ruledescPanel.setLayout(new FlowLayout());
- ruledescPanel.add(new JLabel("Rule desc"));
- final JTextField ruledescField = new JTextField(60);
- ruledescPanel.add(ruledescField);
- JPanel ruleXMLPanel = new JPanel();
- final JTextArea ruleXMLArea = new JTextArea(30, 50);
- makeTextComponentUndoable(ruleXMLArea);
- ruleXMLPanel.add(ruleXMLArea);
- JButton go = new JButton("Create rule XML");
- go.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- StringBuffer sb = new StringBuffer();
- sb.append("" + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append(" " + ruledescField.getText() + PMD.EOL);
- sb.append(" " + PMD.EOL);
- if (xpathQueryArea.getText().length() != 0) {
- sb.append(" " + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append("" + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append(" " + PMD.EOL);
- }
- sb.append(" 3" + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append("" + PMD.EOL);
- sb.append(" " + PMD.EOL);
- sb.append("" + PMD.EOL);
-
- ruleXMLArea.setText(sb.toString());
- }
- });
-
- JPanel fieldsPanel = new JPanel();
- fieldsPanel.setLayout(new BorderLayout());
- fieldsPanel.add(rulenamePanel, BorderLayout.NORTH);
- fieldsPanel.add(rulemsgPanel, BorderLayout.CENTER);
- fieldsPanel.add(ruledescPanel, BorderLayout.SOUTH);
-
- JPanel fieldBtnPanel = new JPanel();
- fieldBtnPanel.setLayout(new BorderLayout());
- fieldBtnPanel.add(fieldsPanel, BorderLayout.NORTH);
- fieldBtnPanel.add(go, BorderLayout.SOUTH);
-
- JPanel outer = new JPanel(new BorderLayout());
- outer.add(fieldBtnPanel, BorderLayout.NORTH);
- outer.add(ruleXMLPanel, BorderLayout.SOUTH);
-
- JDialog d = new JDialog(frame);
- d.setSize(200, 300);
- d.getContentPane().add(outer);
+ CreateXMLRulePanel rulePanel = new CreateXMLRulePanel(xpathQueryArea, codeEditorPane);
+ JFrame xmlframe = new JFrame("Create XML Rule");
+ xmlframe.setContentPane(rulePanel);
+ xmlframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ xmlframe.setSize(new Dimension(600, 700));
+ xmlframe.addComponentListener(new java.awt.event.ComponentAdapter() {
+ public void componentResized(ComponentEvent e) {
+ JFrame tmp = (JFrame)e.getSource();
+ if (tmp.getWidth()<600 || tmp.getHeight()<700) {
+ tmp.setSize(600, 700);
+ }
+ }
+ });
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
- d.setLocation((screenWidth / 2) - frame.getWidth() / 2, (screenHeight / 2) - frame.getHeight() / 2);
- d.setVisible(true);
- d.pack();
- d.show();
+ xmlframe.pack();
+ xmlframe.setLocation((screenWidth - xmlframe.getWidth()) / 2, (screenHeight - xmlframe.getHeight()) / 2);
+ xmlframe.setVisible(true);
}
private JComponent createASTPanel() {