package org.Algy.dialogs; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultComboBoxModel; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.LayoutStyle.ComponentPlacement; import javax.swing.border.EmptyBorder; import com.jgoodies.forms.factories.FormFactory; import com.jgoodies.forms.layout.ColumnSpec; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; public class RenamerDialog extends JDialog implements ActionListener { /** * */ private static final long serialVersionUID = 2027863895274680955L; private final JPanel contentPanel = new JPanel(); private JPrompt txtFromtext; private JPrompt txtToText; private JPrompt txtAdditionalname; private JComboBox renamingTypeComboBox; public enum RenamingType { Package, Class, Method, Field } /** * Launch the application. */ public static void main(String[] args) { try { RenamerDialog dialog = new RenamerDialog(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the dialog. */ public RenamerDialog() { setTitle("Rename"); setBounds(100, 100, 285, 196); getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { JPanel panel = new JPanel(); panel.setBounds(5, 5, 328, 31); panel.setAlignmentY(Component.BOTTOM_ALIGNMENT); contentPanel.add(panel); panel.setLayout(new FormLayout(new ColumnSpec[] { ColumnSpec.decode("47px"), ColumnSpec.decode("90px"), FormFactory.LABEL_COMPONENT_GAP_COLSPEC, ColumnSpec.decode("75px"), FormFactory.LABEL_COMPONENT_GAP_COLSPEC, ColumnSpec.decode("85px"),}, new RowSpec[] { FormFactory.LINE_GAP_ROWSPEC, RowSpec.decode("21px"), FormFactory.LINE_GAP_ROWSPEC, RowSpec.decode("21px"), FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,})); { renamingTypeComboBox = new JComboBox(); renamingTypeComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { RenamingType type = (RenamingType) renamingTypeComboBox.getSelectedItem(); if(type == RenamingType.Method) { txtAdditionalname.setEnabled(true); } else if( type == RenamingType.Field) { txtAdditionalname.setEnabled(true); } else { txtAdditionalname.setEnabled(false); } switch (type ) { case Method: txtAdditionalname.setPromptString("func(Ljava/lang/String/;IZJ)"); txtFromtext.setPromptString("your.package.classname"); txtToText.setPromptString("AlternativeMethodName"); break; case Class: txtAdditionalname.setPromptString(""); txtToText.setPromptString("AlternativeClassName"); txtFromtext.setPromptString("your.package.classname"); break; case Field: txtAdditionalname.setPromptString("field"); txtToText.setPromptString("AlternativeClassName"); txtFromtext.setPromptString("your.package.classname"); break; case Package: txtAdditionalname.setPromptString(""); txtToText.setPromptString("AlternativePackageName"); txtFromtext.setPromptString("your.package.here"); break; } txtAdditionalname.updateUI(); txtAdditionalname.repaint(); txtFromtext.repaint(); txtToText.repaint(); } }); { JLabel lblNewLabel = new JLabel("Renaming Type"); panel.add(lblNewLabel, "2, 2, left, center"); } renamingTypeComboBox.setModel(new DefaultComboBoxModel(RenamingType.values())); panel.add(renamingTypeComboBox, "4, 2, left, top"); } } { JPanel panel = new JPanel(); panel.setBounds(5, 34, 322, 115); panel.setAlignmentX(Component.RIGHT_ALIGNMENT); panel.setAlignmentY(Component.TOP_ALIGNMENT); contentPanel.add(panel); { txtFromtext = new JPrompt(""); txtFromtext.setColumns(20); } { lblArrowicon = new JLabel(""); lblArrowicon.setIcon(new ImageIcon(RenamerDialog.class.getResource("/javax/swing/plaf/metal/icons/ocean/collapsed-rtl.gif"))); } { txtAdditionalname = new JPrompt(""); txtAdditionalname.setColumns(12); } { txtToText = new JPrompt(""); txtToText.setColumns(15); } GroupLayout gl_panel = new GroupLayout(panel); gl_panel.setHorizontalGroup( gl_panel.createParallelGroup(Alignment.TRAILING) .addGroup(gl_panel.createSequentialGroup() .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(gl_panel.createParallelGroup(Alignment.TRAILING, false) .addComponent(txtToText, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(txtFromtext, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(txtAdditionalname, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(lblArrowicon) .addGap(69)) ); gl_panel.setVerticalGroup( gl_panel.createParallelGroup(Alignment.LEADING) .addGroup(gl_panel.createSequentialGroup() .addGap(5) .addGroup(gl_panel.createParallelGroup(Alignment.LEADING) .addComponent(lblArrowicon) .addGroup(gl_panel.createSequentialGroup() .addComponent(txtFromtext, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(txtAdditionalname, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(txtToText, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) .addContainerGap(35, Short.MAX_VALUE)) ); panel.setLayout(gl_panel); } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.setActionCommand("OK"); okButton.addActionListener(this); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); JButton cancelButton = new JButton("Cancel"); cancelButton.setActionCommand("Cancel"); cancelButton.addActionListener(this); buttonPane.add(cancelButton); } } renamingTypeComboBox.setSelectedIndex(0); } public void relayOK() { this.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED , "OK")); } public void relayCancel() { this.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED , "Cancel")); } public String getFromText() { return txtFromtext.getText();} public void setFromText(String str) { txtFromtext.setText(str); } public String getToText() { return txtToText.getText();} public void setToText(String str) { txtToText.setText(str);} public String getAdditionalName() { return txtAdditionalname.getText();} public void getAdditionalName(String str) { txtAdditionalname.setText(str);} public RenamingType getRenamingType() { return (RenamingType) renamingTypeComboBox.getSelectedItem(); } public void setRenamingType(RenamingType type) { renamingTypeComboBox.setSelectedItem(type); } public boolean isAccepted = false; private JLabel lblArrowicon; @Override public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if("OK".equals(cmd)) { this.setVisible(false); isAccepted = true; } else if("Cancel".equals(cmd)) { this.setVisible(false); isAccepted = false; } } public boolean isAccepted() { return isAccepted; } }