88
99import com .jfoenix .controls .JFXComboBox ;
1010
11+ import javafx .event .ActionEvent ;
1112import javafx .event .Event ;
1213import javafx .event .EventHandler ;
1314import javafx .fxml .FXML ;
@@ -61,18 +62,19 @@ public DBConnectionInfoAnchorPane() {
6162 }
6263
6364 public void init () {
64- driverCB .getItems ().addAll (propertyRepository .getOracleDrivers ());
65-
6665 // DB Url Generate Event Setting
6766 String dbms = "oracle" ;
68- DBUrlGenerateEvent urlEvent = new DBUrlGenerateEvent (dbms );
69-
70- driverCB .getSelectionModel ().selectedItemProperty ().addListener ((options , oldValue , newValue ) -> {
71- urlEvent .handle (null );
72- });
73- hostTF .setOnKeyReleased (urlEvent );
74- portTF .setOnKeyReleased (urlEvent );
75- sidTF .setOnKeyReleased (urlEvent );
67+ DBConnInfoOnChangedEvent changedEvent = new DBConnInfoOnChangedEvent (dbms );
68+ DBConnInfoOnChangedActionEvent changedActionEvent = new DBConnInfoOnChangedActionEvent (dbms );
69+
70+ // Set event
71+ driverCB .setOnAction (changedActionEvent );
72+ hostTF .setOnKeyReleased (changedEvent );
73+ portTF .setOnKeyReleased (changedEvent );
74+ sidTF .setOnKeyReleased (changedEvent );
75+ userTF .setOnKeyReleased (changedEvent );
76+ passwordPF .setOnKeyReleased (changedEvent );
77+ aliasTF .setOnKeyReleased (changedEvent );
7678 urlTF .setOnKeyReleased (s -> {
7779 String text = ((TextField ) s .getSource ()).getText ();
7880 Pattern p = Pattern
@@ -83,20 +85,22 @@ public void init() {
8385 portTF .setText (m .group (4 ));
8486 sidTF .setText (m .group (5 ));
8587 } else {
86- urlEvent .handle (s );
88+ changedEvent .handle (s );
8789 }
8890 });
91+
92+ // Set driver ComboBox values
93+ driverCB .getItems ().addAll (propertyRepository .getOracleDrivers ());
8994 }
90-
95+
9196 public void setInitialValue (JdbcConnectionInfo jdbc ) {
9297 hostTF .setText (jdbc .getJdbcHost ());
9398 sidTF .setText (jdbc .getJdbcSID ());
9499 userTF .setText (jdbc .getJdbcId ());
95100 passwordPF .setText (jdbc .getJdbcPw ());
96101 urlTF .setText (jdbc .getJdbcUrl ());
97102 portTF .setText (jdbc .getJdbcPort ());
98- // TODO
99- driverCB .getSelectionModel ().select ("thin" );
103+ driverCB .getSelectionModel ().select (jdbc .getJdbcDriver ());
100104 aliasTF .setText (jdbc .getJdbcDBName ());
101105 }
102106
@@ -120,39 +124,20 @@ public boolean isAnyEmptyInput() {
120124 passwordPF .getText (), driverCB .getSelectionModel ().getSelectedItem ());
121125 }
122126
123- /**
124- * 키 입력 또는 콤보박스 선택을 통해 입력된 Database 접속정보를 이용해 URL을 생성하는 이벤트
125- *
126- * @author DKY
127- *
128- */
129- private class DBUrlGenerateEvent implements EventHandler <Event > {
130-
131- private String dbms ;
132-
133- public DBUrlGenerateEvent (String dbms ) {
134- this .dbms = dbms ;
135- }
136-
137- @ Override
138- public void handle (Event event ) {
139- System .out .println ("Fire!" );
140-
141- StringBuffer url = new StringBuffer ();
142- url .append ("jdbc:" ).append (dbms ).append (":" ).append (driverCB .getSelectionModel ().getSelectedItem ())
143- .append (":@" )
144- .append (hostTF .getText () == null ? "" : hostTF .getText ()).append (":" )
145- .append (portTF .getText () == null ? "" : portTF .getText ()).append ("/" )
146- .append (sidTF .getText () == null ? "" : sidTF .getText ());
147-
148- urlTF .setText (url .toString ());
149-
150- if (event == null ) {
151- System .out .println ("Event is Null" );
152- return ;
153- }
154-
155- Node node = (Node ) event .getTarget ();
127+ private String generateURL (String dbms ) {
128+ StringBuffer url = new StringBuffer ();
129+ url .append ("jdbc:" ).append (dbms ).append (":" )
130+ .append (driverCB .getSelectionModel ().getSelectedItem () == null ? "" : driverCB .getSelectionModel ().getSelectedItem ())
131+ .append (":@" )
132+ .append (hostTF .getText () == null ? "" : hostTF .getText ()).append (":" )
133+ .append (portTF .getText () == null ? "" : portTF .getText ()).append ("/" )
134+ .append (sidTF .getText () == null ? "" : sidTF .getText ());
135+ return url .toString ();
136+ }
137+
138+ private void setDBConnTestBtnDisable (Node node ) {
139+ try {
140+ // Find Top Node
156141 Node topParent = null ;
157142 while (true ) {
158143 if (node .getParent () == null ) {
@@ -167,7 +152,62 @@ public void handle(Event event) {
167152 return ;
168153 }
169154
155+ // DB Connection test button lookup and setDisable
170156 topParent .lookup ("#connTestBtn" ).setDisable (isAnyEmptyInput ());
157+ } catch (Exception e ) {
158+ e .printStackTrace ();
159+ }
160+ }
161+
162+ private void dbConnInfoChangedEventHandle (String dbms , Event event ) {
163+ // Generate URL
164+ urlTF .setText (generateURL (dbms ));
165+
166+ // Find Top Parent and set disable DBConnTestBtn
167+ setDBConnTestBtnDisable ((Node ) event .getTarget ());
168+ }
169+
170+ /**
171+ * 키 입력을 통해 입력된 Database 접속정보를 이용해 URL을 생성하고,
172+ * 입력된 값에 따라 DB 연동테스트 버튼을 활성화/비활성화한다.
173+ *
174+ * @author DKY
175+ *
176+ */
177+ private class DBConnInfoOnChangedEvent implements EventHandler <Event > {
178+
179+ private String dbms ;
180+
181+ public DBConnInfoOnChangedEvent (String dbms ) {
182+ this .dbms = dbms ;
183+ }
184+
185+ @ Override
186+ public void handle (Event event ) {
187+ System .out .println ("DBConnInfoOnKeyReleasedEvent Event Fire!" );
188+ dbConnInfoChangedEventHandle (dbms , event );
189+ }
190+ }
191+
192+ /**
193+ * 콤보박스 선택을 통해 입력된 Database 접속정보를 이용해 URL을 생성하고,
194+ * 입력된 값에 따라 DB 연동테스트 버튼을 활성화/비활성화한다.
195+ *
196+ * @author DKY
197+ *
198+ */
199+ private class DBConnInfoOnChangedActionEvent implements EventHandler <ActionEvent > {
200+
201+ private String dbms ;
202+
203+ public DBConnInfoOnChangedActionEvent (String dbms ) {
204+ this .dbms = dbms ;
205+ }
206+
207+ @ Override
208+ public void handle (ActionEvent event ) {
209+ System .out .println ("DBConnInfoOnKeyReleasedEvent Event Fire!" );
210+ dbConnInfoChangedEventHandle (dbms , event );
171211 }
172212 }
173213}
0 commit comments