The Backyard - ImplementConnectionPanel Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
!データベースエクスプローラの接続情報を利用する
!!entity.htmlへの説明文の記述
最初にウィザードの説明文をentity.htmlのbodyに記述しましょう。
<HTML>
<BODY>
データベースと接続して、指定されたテーブルの情報からビーンを作成します。
</BODY>
</HTML>
!!データベース接続選択処理の実装
!!!GUIの実装
次に、EntityVisualPanel1.javaのGUIを作成します。
[[panel1|http://arton.no-ip.info/data/nb5/nb3-panel1.png]]
なお、ウィザードはサイズ変更可能なダイアログなのでフローレイアウトを利用するのが良いとは思いますが、ここでは面倒なのでnullレイアウトを利用して固定配置しています。
設定内容を以下に示します。コントロールが実際にどれかは上図左下のインスペクターを参照してください。
:jLabel1:textに「接続先を選択」を設定
:addConnectionButton:textに「接続先を追加」を設定。mouseClickedイベントを割り当て
:connectionList:モデルをnull(ListModelEditorを選択して内容を消去)に設定
!!!プログラムの実装
!!!!importの追加
import javax.swing.JPanel;
// 以下を追加
import java.util.Vector;
import org.netbeans.api.db.explorer.ConnectionListener;
import org.netbeans.api.db.explorer.ConnectionManager;
import org.netbeans.api.db.explorer.DatabaseConnection;
!!!!インターフェイスの追加
「接続先を追加」の結果を受け取ってリストに設定内容を追加できるようにConnectionListenerを実装します。
public final class EntityVisualPanel1 extends JPanel implements ConnectionListener {
!!!!接続に関連するイベント受信処理、リストへの設定処理の実装
データベースエクスプローラの接続管理オブジェクトはConnectionManagerクラスのインスタンスです。このインスタンスは、ConnectionManager.getDefault()メソッドを呼び出すことで得ることができます。
コンストラクタで、ConnectionManagerが通知するconnectionsChangedイベントを受けられるように登録します。
setupListメソッドはリストに対して、利用可能な接続の一覧を表示します。
登録済みの接続情報は、ConnectionManager#getConnectionsによって得ることができます。
なお、接続情報のインスタンスであるDatabaseConnectionは、その時点で接続済みかどうかはわかりません。アプリケーションが、DatabaseConnectionを引数としてConnectionManager#showConnectionDialogメソッドを呼び出すと、もし未接続であれば必要に応じてユーザー名/パスワードの入力ダイアログを表示し(パスワードをセッションで保持するようにダイアログでチェックしていれば2回目以降は表示されません)、プログレスバーを表示して接続します。すでに接続済みであればすぐに呼び出しは完了します。
なお、接続済みDatabaseConnectionを切断するには、ConnectionManager#disconnectを呼び出します。
/** Creates new form EntityVisualPanel1 */
public EntityVisualPanel1() {
ConnectionManager.getDefault().addConnectionListener(this);
initComponents();
setupList();
}
public void connectionsChanged() {
setupList();
}
void setupList() {
Vector v = new Vector();
DatabaseConnection[] dc = ConnectionManager.getDefault().getConnections();
for (int i = 0; i < dc.length; i++) {
v.add(dc[i].getName());
}
connectionList.setListData(v);
}
!!!!ボタンクリック時の処理を実装
データベースエクスプローラに登録したJDBCドライバは、JDBCDriverクラスのインスタンスとしてプログラムからは参照できます。
ConnectionManager#showAddConnectionDialog(JDBCDriver driver)は、指定したJDBCドライバ上の新たな接続を作成します。JDBCドライバにnullを指定した場合、登録済みのJDBCドライバからの選択となります。
接続が作成できた場合、ConnectionManagerは登録済みConnectionListenerに対してconnectionsChangedイベントを通知します。
private void addConnectionButtonMouseClicked(java.awt.event.MouseEvent evt) {
ConnectionManager.getDefault().showAddConnectionDialog(null);
}
!!実装を確認する
ここまで完了したら、一度実行して動作を確認してみましょう。
実行ボタンをクリックすると、NetBeansIDEの別のインスタンスが起動されるので、適当なアプリケーションプロジェクトを作成し、プロジェクトウィンドウのコンテキストメニューから''New''―''File/Folder''をクリックしてみましょう。
新規ファイルの作成ダイアログから''JavaBeans Object''を選択してみましょう。
ウィザードに割り当てた表示名の「Table Entity」とentity.htmlのbodyへの記述が表示されることが確認できます。
[[ファイルタイプの選択|http://arton.no-ip.info/data/nb5/nb3-newfiledlg.png]]
ここで''Table Entity''を選択して''Next''をクリックすると、ウィザードの最初のパネルが表示されます。
「接続先を追加」ボタンをクリックして接続先を追加したりして動作を確認してみましょう。
[[接続指定パネル|http://arton.no-ip.info/data/nb5/nb3-step1-1.png]]
ここまで完了したら''Cancel''をクリックしてウィザードを中止し、テスト用に起動されたNetBeansを終了しましょう。
!!Wizardと連携する
この状態では、EntityVisualPanel1とEntityWizardPanel1はまだ連携ができていません。このため、何も選択していなくても''Next''ボタンをクリックできてしまいます。
次のステップでは、EntityVisualPanel1で選択したDatabaseConnectionをEntityWizardPanel1で取得して後続のパネルで利用できるようにしましょう。(ImplementConnectionWizardへ続く)
!!entity.htmlへの説明文の記述
最初にウィザードの説明文をentity.htmlのbodyに記述しましょう。
<HTML>
<BODY>
データベースと接続して、指定されたテーブルの情報からビーンを作成します。
</BODY>
</HTML>
!!データベース接続選択処理の実装
!!!GUIの実装
次に、EntityVisualPanel1.javaのGUIを作成します。
[[panel1|http://arton.no-ip.info/data/nb5/nb3-panel1.png]]
なお、ウィザードはサイズ変更可能なダイアログなのでフローレイアウトを利用するのが良いとは思いますが、ここでは面倒なのでnullレイアウトを利用して固定配置しています。
設定内容を以下に示します。コントロールが実際にどれかは上図左下のインスペクターを参照してください。
:jLabel1:textに「接続先を選択」を設定
:addConnectionButton:textに「接続先を追加」を設定。mouseClickedイベントを割り当て
:connectionList:モデルをnull(ListModelEditorを選択して内容を消去)に設定
!!!プログラムの実装
!!!!importの追加
import javax.swing.JPanel;
// 以下を追加
import java.util.Vector;
import org.netbeans.api.db.explorer.ConnectionListener;
import org.netbeans.api.db.explorer.ConnectionManager;
import org.netbeans.api.db.explorer.DatabaseConnection;
!!!!インターフェイスの追加
「接続先を追加」の結果を受け取ってリストに設定内容を追加できるようにConnectionListenerを実装します。
public final class EntityVisualPanel1 extends JPanel implements ConnectionListener {
!!!!接続に関連するイベント受信処理、リストへの設定処理の実装
データベースエクスプローラの接続管理オブジェクトはConnectionManagerクラスのインスタンスです。このインスタンスは、ConnectionManager.getDefault()メソッドを呼び出すことで得ることができます。
コンストラクタで、ConnectionManagerが通知するconnectionsChangedイベントを受けられるように登録します。
setupListメソッドはリストに対して、利用可能な接続の一覧を表示します。
登録済みの接続情報は、ConnectionManager#getConnectionsによって得ることができます。
なお、接続情報のインスタンスであるDatabaseConnectionは、その時点で接続済みかどうかはわかりません。アプリケーションが、DatabaseConnectionを引数としてConnectionManager#showConnectionDialogメソッドを呼び出すと、もし未接続であれば必要に応じてユーザー名/パスワードの入力ダイアログを表示し(パスワードをセッションで保持するようにダイアログでチェックしていれば2回目以降は表示されません)、プログレスバーを表示して接続します。すでに接続済みであればすぐに呼び出しは完了します。
なお、接続済みDatabaseConnectionを切断するには、ConnectionManager#disconnectを呼び出します。
/** Creates new form EntityVisualPanel1 */
public EntityVisualPanel1() {
ConnectionManager.getDefault().addConnectionListener(this);
initComponents();
setupList();
}
public void connectionsChanged() {
setupList();
}
void setupList() {
Vector v = new Vector();
DatabaseConnection[] dc = ConnectionManager.getDefault().getConnections();
for (int i = 0; i < dc.length; i++) {
v.add(dc[i].getName());
}
connectionList.setListData(v);
}
!!!!ボタンクリック時の処理を実装
データベースエクスプローラに登録したJDBCドライバは、JDBCDriverクラスのインスタンスとしてプログラムからは参照できます。
ConnectionManager#showAddConnectionDialog(JDBCDriver driver)は、指定したJDBCドライバ上の新たな接続を作成します。JDBCドライバにnullを指定した場合、登録済みのJDBCドライバからの選択となります。
接続が作成できた場合、ConnectionManagerは登録済みConnectionListenerに対してconnectionsChangedイベントを通知します。
private void addConnectionButtonMouseClicked(java.awt.event.MouseEvent evt) {
ConnectionManager.getDefault().showAddConnectionDialog(null);
}
!!実装を確認する
ここまで完了したら、一度実行して動作を確認してみましょう。
実行ボタンをクリックすると、NetBeansIDEの別のインスタンスが起動されるので、適当なアプリケーションプロジェクトを作成し、プロジェクトウィンドウのコンテキストメニューから''New''―''File/Folder''をクリックしてみましょう。
新規ファイルの作成ダイアログから''JavaBeans Object''を選択してみましょう。
ウィザードに割り当てた表示名の「Table Entity」とentity.htmlのbodyへの記述が表示されることが確認できます。
[[ファイルタイプの選択|http://arton.no-ip.info/data/nb5/nb3-newfiledlg.png]]
ここで''Table Entity''を選択して''Next''をクリックすると、ウィザードの最初のパネルが表示されます。
「接続先を追加」ボタンをクリックして接続先を追加したりして動作を確認してみましょう。
[[接続指定パネル|http://arton.no-ip.info/data/nb5/nb3-step1-1.png]]
ここまで完了したら''Cancel''をクリックしてウィザードを中止し、テスト用に起動されたNetBeansを終了しましょう。
!!Wizardと連携する
この状態では、EntityVisualPanel1とEntityWizardPanel1はまだ連携ができていません。このため、何も選択していなくても''Next''ボタンをクリックできてしまいます。
次のステップでは、EntityVisualPanel1で選択したDatabaseConnectionをEntityWizardPanel1で取得して後続のパネルで利用できるようにしましょう。(ImplementConnectionWizardへ続く)