1111import java .awt .Dimension ;
1212import java .awt .HeadlessException ;
1313import java .awt .Toolkit ;
14+ import java .awt .event .KeyEvent ;
15+ import java .awt .event .KeyListener ;
1416import java .awt .event .MouseEvent ;
1517import javax .swing .BorderFactory ;
1618import javax .swing .DefaultComboBoxModel ;
2729import javax .swing .JTextPane ;
2830import javax .swing .SizeRequirements ;
2931import javax .swing .event .MouseInputAdapter ;
30- import javax .swing .table .DefaultTableModel ;
3132import javax .swing .text .Element ;
3233import javax .swing .text .View ;
3334import javax .swing .text .ViewFactory ;
4142 */
4243
4344public class MainPanel extends JFrame {
45+ private final MyTableModel mMyTableModel ;
4446 private JComboBox mCbBaseUrl ;
4547 private JButton mBtnSaveBaseUrl ;
4648 private JComboBox mCbApiUrl ;
@@ -57,6 +59,8 @@ public class MainPanel extends JFrame {
5759 private JButton btnDelUrl ;
5860 private JButton btnDelApi ;
5961 private JComboBox mCbMethod ;
62+ private JButton btnAddRow ;
63+ private JButton btnDelRow ;
6064
6165 public JComboBox getCbMethod () {
6266 return mCbMethod ;
@@ -66,6 +70,10 @@ public JTable getTbParame() {
6670 return mTbParame ;
6771 }
6872
73+ public MyTableModel getMyTableModel () {
74+ return mMyTableModel ;
75+ }
76+
6977 public JComboBox getCbEncrypt () {
7078 return mCbEncrypt ;
7179 }
@@ -99,7 +107,7 @@ public int getSelectedEncryptID() {
99107 }
100108
101109 public int getSelectedMethodType () {
102- return MyValueHandler . INSTANCE . encryptIndex2Id ( mCbEncrypt . getSelectedIndex () );
110+ return mCbMethod . getSelectedIndex ();
103111 }
104112
105113 public MainPanel (String title ) throws HeadlessException {
@@ -109,7 +117,8 @@ public MainPanel(String title) throws HeadlessException {
109117 mCbMethod .setModel (new DefaultComboBoxModel (new String [] { "POST" , "GET" }));
110118 setContentPane (baseP );
111119 setJMenuBar (UILifecycleHandler .INSTANCE .getMenuBar ());
112- mTbParame .setModel (new DefaultTableModel (new Object [] { "key" , "value" }, MyValueHandler .PARAME_TABLE_ROW_COUNT ));
120+ mMyTableModel = new MyTableModel ();
121+ mTbParame .setModel (mMyTableModel );
113122 mBtnSaveBaseUrl .addActionListener (e -> UIActionHandler .INSTANCE .onSaveBaseUrl (mCbBaseUrl .getModel ().getSelectedItem ()));
114123 btnDelUrl .addActionListener (e -> UIActionHandler .INSTANCE .onDelBaseUrl (mCbBaseUrl .getModel ().getSelectedItem ()));
115124 btnDelApi .addActionListener (e -> UIActionHandler .INSTANCE .onDelApiUrl ((ApiBean ) mCbApiUrl .getModel ().getSelectedItem ()));
@@ -147,7 +156,7 @@ public void mouseClicked(MouseEvent e) {
147156 }
148157 });
149158 //支持自动换行
150- mTpResponse . setEditorKit ( new HTMLEditorKit () {
159+ HTMLEditorKit editorKit = new HTMLEditorKit () {
151160 @ Override
152161 public ViewFactory getViewFactory () {
153162
@@ -193,9 +202,39 @@ protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirem
193202 }
194203 };
195204 }
196- });
197-
205+ };
206+ mTpResponse .setEditorKit (editorKit );
207+ mTpInfo .setEditorKit (editorKit );
198208 mJep .jTree .setCellRenderer (new JsonTreeCellRenderer ());
209+ mTbParame .addKeyListener (new KeyListener () {
210+ @ Override
211+ public void keyTyped (KeyEvent e ) {
212+
213+ }
214+
215+ @ Override
216+ public void keyPressed (KeyEvent e ) {
217+
218+ }
219+
220+ @ Override
221+ public void keyReleased (KeyEvent e ) {
222+ if (e .getKeyCode () == KeyEvent .VK_DELETE ) {
223+ mMyTableModel .removeRow (mTbParame .getSelectedRow ());
224+ }
225+ }
226+ });
227+ mTbParame .getColumnModel ().getColumn (0 ).setPreferredWidth (50 );
228+ mTbParame .getColumnModel ().getColumn (1 ).setPreferredWidth (120 );
229+ mTbParame .getColumnModel ().getColumn (2 ).setPreferredWidth (350 );
230+ btnAddRow .addActionListener (e -> {
231+ mMyTableModel .addEmptyRow ();
232+ mTbParame .requestFocus ();
233+ int index = mMyTableModel .getRowCount () - 1 ;
234+ mTbParame .setRowSelectionInterval (index , index );//最后一行获得焦点
235+ mTbParame .editCellAt (index , 1 );
236+ });
237+ btnDelRow .addActionListener (e -> mMyTableModel .removeRow (mTbParame .getSelectedRow ()));
199238 pack ();
200239 Dimension screensize = Toolkit .getDefaultToolkit ().getScreenSize ();
201240 int x = (int ) screensize .getWidth () / 2 - baseP .getPreferredSize ().width / 2 ;
@@ -214,6 +253,22 @@ protected void finalize() throws Throwable {
214253 OB .INSTANCE .onExit ();
215254 }
216255
256+ public String getCurApiUrl () {
257+ return mCbApiUrl .getSelectedItem ().toString ();
258+ }
259+
260+ public int getCurMethod () {
261+ return mCbMethod .getSelectedIndex ();
262+ }
263+
264+ public int getCurEncryptCode () {
265+ return mCbMethod .getSelectedIndex ();
266+ }
267+
268+ public String getCurBaseUrl () {
269+ return (String ) mCbBaseUrl .getSelectedItem ();
270+ }
271+
217272 /**
218273 * Method generated by IntelliJ IDEA GUI Designer
219274 * >>> IMPORTANT!! <<<
@@ -226,9 +281,9 @@ protected void finalize() throws Throwable {
226281 baseP = new JPanel ();
227282 baseP .setLayout (new FormLayout (
228283 "fill:d:noGrow,left:4dlu:noGrow,fill:300px:noGrow,left:4dlu:noGrow,fill:d:noGrow,left:4dlu:noGrow,fill:max(d;4px):noGrow,left:4dlu:noGrow,fill:d:noGrow," +
229- "left:4dlu:noGrow,fill:d:noGrow,left:4dlu:noGrow,fill:max(p; 600px) :grow" ,
284+ "left:4dlu:noGrow,fill:d:noGrow,left:4dlu:noGrow,fill:600px:grow" ,
230285 "center:d:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:200px:noGrow," +
231- "top:4dlu:noGrow,center:max(p;600px):grow,center:max(d;4px):noGrow" ));
286+ "top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max( p;600px):grow,center:max(d;4px):noGrow" ));
232287 baseP .setName ("Api debugger" );
233288 baseP .setBorder (BorderFactory .createTitledBorder (BorderFactory .createEmptyBorder (1 , 1 , 1 , 1 ), null ));
234289 final JLabel label1 = new JLabel ();
@@ -249,20 +304,20 @@ protected void finalize() throws Throwable {
249304 scrollPane1 .setViewportView (mTbParame );
250305 final JScrollPane scrollPane2 = new JScrollPane ();
251306 scrollPane2 .setHorizontalScrollBarPolicy (31 );
252- baseP .add (scrollPane2 , cc .xyw (1 , 10 , 11 , CellConstraints .FILL , CellConstraints .FILL ));
307+ baseP .add (scrollPane2 , cc .xyw (1 , 12 , 11 , CellConstraints .FILL , CellConstraints .FILL ));
253308 scrollPane2 .setBorder (BorderFactory .createTitledBorder ("Response" ));
254309 mTpResponse = new JTextPane ();
255310 mTpResponse .setPreferredSize (new Dimension (500 , 600 ));
256311 scrollPane2 .setViewportView (mTpResponse );
257312 lbStatus = new JLabel ();
258313 lbStatus .setText ("Status:" );
259- baseP .add (lbStatus , cc .xyw (1 , 11 , 11 ));
314+ baseP .add (lbStatus , cc .xyw (1 , 13 , 11 ));
260315 final JScrollPane scrollPane3 = new JScrollPane ();
261316 baseP .add (scrollPane3 , cc .xywh (13 , 1 , 1 , 8 , CellConstraints .FILL , CellConstraints .FILL ));
262317 scrollPane3 .setBorder (BorderFactory .createTitledBorder ("Request Information" ));
263318 mTpInfo = new JTextPane ();
264319 scrollPane3 .setViewportView (mTpInfo );
265- baseP .add (mJep , cc .xywh (13 , 9 , 1 , 2 ));
320+ baseP .add (mJep , cc .xywh (13 , 9 , 1 , 4 ));
266321 mJep .setBorder (BorderFactory .createTitledBorder ("Json Tree" ));
267322 final JLabel label2 = new JLabel ();
268323 label2 .setText ("Encryption:" );
@@ -295,6 +350,12 @@ protected void finalize() throws Throwable {
295350 mBtnSend = new JButton ();
296351 mBtnSend .setText ("Send" );
297352 baseP .add (mBtnSend , cc .xy (11 , 6 ));
353+ btnAddRow = new JButton ();
354+ btnAddRow .setText ("Add Row" );
355+ baseP .add (btnAddRow , cc .xyw (1 , 10 , 3 ));
356+ btnDelRow = new JButton ();
357+ btnDelRow .setText ("Delete Selected Row" );
358+ baseP .add (btnDelRow , cc .xyw (5 , 10 , 7 ));
298359 }
299360
300361 /** @noinspection ALL */
0 commit comments