|
1 | 1 | package root.javafx.CustomView; |
2 | 2 |
|
3 | 3 | import java.io.IOException; |
| 4 | +import java.util.regex.Matcher; |
| 5 | +import java.util.regex.Pattern; |
4 | 6 |
|
5 | 7 | import com.jfoenix.controls.JFXComboBox; |
6 | 8 |
|
| 9 | +import javafx.event.Event; |
| 10 | +import javafx.event.EventHandler; |
7 | 11 | import javafx.fxml.FXML; |
8 | 12 | import javafx.fxml.FXMLLoader; |
9 | 13 | import javafx.scene.control.PasswordField; |
@@ -69,5 +73,53 @@ public void setInitialValue(JdbcConnectionInfo jdbc) { |
69 | 73 | portTF.setText(jdbc.getJdbcPort()); |
70 | 74 | driverCB.getSelectionModel().select(jdbc.getJdbcOracleDriver()); |
71 | 75 | aliasTF.setText(jdbc.getJdbcDBName()); |
| 76 | + |
| 77 | + // DB Url Generate Event Setting |
| 78 | + String dbms = "oracle"; |
| 79 | + DBUrlGenerateEvent urlEvent = new DBUrlGenerateEvent(dbms); |
| 80 | + |
| 81 | + driverCB.setOnInputMethodTextChanged(urlEvent); |
| 82 | + hostTF.setOnKeyReleased(urlEvent); |
| 83 | + portTF.setOnKeyReleased(urlEvent); |
| 84 | + sidTF.setOnKeyReleased(urlEvent); |
| 85 | + |
| 86 | + urlTF.setOnKeyReleased(s -> { |
| 87 | + String text = ((TextField) s.getSource()).getText(); |
| 88 | + Pattern p = Pattern |
| 89 | + .compile("(.*):(.*):" + driverCB.getSelectionModel().getSelectedItem() + ":@(.*):(.*)/(.*)"); |
| 90 | + Matcher m = p.matcher(text); |
| 91 | + if (m.matches()) { |
| 92 | + hostTF.setText(m.group(3)); |
| 93 | + portTF.setText(m.group(4)); |
| 94 | + sidTF.setText(m.group(5)); |
| 95 | + } else { |
| 96 | + urlEvent.handle(s); |
| 97 | + } |
| 98 | + }); |
| 99 | + } |
| 100 | + |
| 101 | + /** |
| 102 | + * 키 입력 또는 콤보박스 선택을 통해 입력된 Database 접속정보를 이용해 URL을 생성하는 이벤트 |
| 103 | + * |
| 104 | + * @author DKY |
| 105 | + * |
| 106 | + */ |
| 107 | + private class DBUrlGenerateEvent implements EventHandler<Event> { |
| 108 | + |
| 109 | + private String dbms; |
| 110 | + |
| 111 | + public DBUrlGenerateEvent(String dbms) { |
| 112 | + this.dbms = dbms; |
| 113 | + } |
| 114 | + |
| 115 | + @Override |
| 116 | + public void handle(Event event) { |
| 117 | + StringBuffer url = new StringBuffer(); |
| 118 | + url.append("jdbc:").append(dbms).append(":").append(driverCB.getSelectionModel().getSelectedItem()) |
| 119 | + .append(":@").append(hostTF.getText()).append(":").append(portTF.getText()).append("/") |
| 120 | + .append(sidTF.getText()); |
| 121 | + |
| 122 | + urlTF.setText(url.toString()); |
| 123 | + } |
72 | 124 | } |
73 | 125 | } |
0 commit comments