11package actions ;
22
3+ import java .awt .Dimension ;
4+
35import javax .swing .JOptionPane ;
46
57import actions .edit .undoredo .SharedUndoRedoActionManager ;
810import actions .menu .PaintActionMenuItem ;
911import paintcomponents .java .lazy .ClassPaintComponent ;
1012import ui .PaintPanel ;
13+ import ui .helper .ClassSearchFrame ;
14+ import ui .helper .ClassSearchFrameDelegateInterface ;
1115
1216public class AddLazyJavaClassAction extends PaintAction {
1317
@@ -19,37 +23,51 @@ public AddLazyJavaClassAction(PaintPanel panel) {
1923 public boolean canPerformAction () {
2024 return true ;
2125 }
22-
26+
2327 @ Override
2428 public void performAction () {
25- String className = JOptionPane
26- .showInputDialog ("Please specify the name of the Java Class" );
27- try {
28- Class classObj = Class .forName (className );
29- ClassPaintComponent comp = new ClassPaintComponent (classObj ,
30- panel .getWidth () / 2 , panel .getHeight () / 2 );
31- panel .addPaintComponent (comp );
32- // add action to undo redo manager
33- SharedUndoRedoActionManager .getSharedInstance ().pushUndoableAction (new UndoRedoableInterface () {
29+
30+ ClassSearchFrame classSearchFrame = new ClassSearchFrame ();
31+ classSearchFrame .setDelegate (new ClassSearchFrameDelegateInterface () {
32+
33+ @ Override
34+ public void didSelectClass (String classname ) {
3435
35- @ Override
36- public void undoAction () {
37- comp .remove (panel );
38- panel .repaint ();
39- }
40-
41- @ Override
42- public void redoAction () {
36+ try {
37+ Class classObj = Class .forName (classname );
38+ ClassPaintComponent comp = new ClassPaintComponent (classObj ,
39+ panel .getWidth () / 2 , panel .getHeight () / 2 );
4340 panel .addPaintComponent (comp );
41+ // add action to undo redo manager
42+ SharedUndoRedoActionManager .getSharedInstance ().pushUndoableAction (new UndoRedoableInterface () {
43+
44+ @ Override
45+ public void undoAction () {
46+ comp .remove (panel );
47+ panel .repaint ();
48+ }
49+
50+ @ Override
51+ public void redoAction () {
52+ panel .addPaintComponent (comp );
53+ panel .repaint ();
54+ }
55+ });
4456 panel .repaint ();
57+ } catch (ClassNotFoundException e ) {
58+ e .printStackTrace ();
59+ JOptionPane .showMessageDialog (panel ,
60+ classname + " :: Class Not Found" );
4561 }
46- });
47- panel .repaint ();
48- } catch (ClassNotFoundException e ) {
49- e .printStackTrace ();
50- JOptionPane .showMessageDialog (panel ,
51- className + " :: Class Not Found" );
52- }
62+ }
63+ });
64+
65+
66+ classSearchFrame .setVisible (true );
67+ classSearchFrame .setSize (new Dimension (300 , 200 ));
68+
69+
70+
5371
5472 }
5573
0 commit comments