Java Drawing DrawTop

Language

JP  US  UK

 

図形情報ダイアログ

 H. Jyounishi, Tokyo Japan
 

Frame (Index), No frame                 version:0.3(latest)  

要旨:図形データを表示するダイアログを表示する。図形のないところでマウスの右ボタンを押すと画面の情報、設定されているマウスリスナーを表示する。

このページで説明するクラス: DialogOfShapeFormat, ShapeFormatListener, SpinnersChangeListener, ShapeFormatAction, DialogOfDrawPanel, DialogOfDrawPanelListener, DialogOfDrawPanelAction

1. Shape format dialog
ポップアップメニューの"shape format"メニューアイテムを選ぶと、次のダイアログが表示される。
See=> ポップアップメニューの種類, 操作説明書: 属性(property)タブ


図 1.1 (a) 直線に対する位置, サイズ(position, size)タブ

図 1.1 (b)その他図形に対する位置, サイズ(position, size)タブ


図 1.2(a) 線種、色などを設定するスタイルタブ



図 1.2 (b) 線種(line stroke)ボタンを押したときのプルダウンメニュー



図 1.3 属性(property)タブ

図 1.4 図形データタブ


図 1.5 テキストボックスタブ

図 1.6 テキストタブ

図1. 図形フォーマットダイアログ



1.1 DialogOfShapeFormatクラス 戻る=>page top

public class DialogOfShapeFormat extends JDialog

フィールド

説明

action

ShapeFormatAction action

ボタン等に設定するActionListenerオブジェクト(ShapeFormatAction)。

dataScrollPane

JScrollPane dataScrollPane

The ScrollPane in the data tab (図 1.4).

textScrollPane

JScrollPane textScrollPane

テキストパネルに設定するスクロールペイン (図 1.5)。

shapeContainer

ShapeContainer shapeContainer

showDialogメソッドの引数で渡される図形データ(ShapeContainer)。 グループ図形でも良い。

pixelButton

JRadioButton pixelButton

長さの単位をピクセルで表示することを指示する位置、サイズタブ (図 1.1) のボタン。

mmButton

JRadioButton mmButton

長さの単位をミリメータで表示することを指示する位置、サイズタブ (図 1.1) のボタン。

unresizableBox

JCheckBox unresizableBox

"unresizable" 属性を設定するチェックボックス(図 1.3).

ratioBox

JCheckBox ratioBox

"keep aspect ratio"属性を設定するチェックボックス (図 1.3).

directionBox

JCheckBox directionBox

"keep line direction" 属性を設定するチェックボックス (図 1.3).

unableConnectorBox

JCheckBox unableConnectorBox

"unable to drag connectors"属性を設定するチェックボックス (図 1.3).

ungroupBox

JCheckBox ungroupBox

"unable ungrouping" 属性を設定するチェックボックス (図 1.3).

dialogDimension

Dimension dialogDimension=new Dimension(400,330);

ダイアログの初期サイズ。

buttonSize

Dimension buttonSize=new Dimension(80,22)

positionSpinners

JSpinner[] positionSpinners=new JSpinner[4]

x-min, x-max, y-min, y-maxの表示および値の変更をするスピナー (図 1.1 (b))。

positionSpinnerModels

SpinnerNumberModel[] positionSpinnerModels=new SpinnerNumberModel[4]

positionSpinnersのモデル。

centerSpinners

JSpinner[] centerSpinners=new JSpinner[2];

center pointの表示および値の変更をするスピナー (図 1.1 (b))。

centerSpinnerModels

SpinnerNumberModel[] centerSpinnerModels=new SpinnerNumberModel[2];

centerSpinnersのモデル。

sizeSpinners

JSpinner[] sizeSpinners=new JSpinner[2]

width, heightの表示および値の変更をするスピナー (図 1.1 (b))。

sizeSpinnerModels

SpinnerNumberModel[] sizeSpinnerModels=new SpinnerNumberModel[2]

sizeSpinnersのモデル。

startSpinners

JSpinner[] startSpinners=new JSpinner[2]

始点(start point) の表示および値の変更をするスピナー (図 1.1 (a)).

startSpinnerModels

SpinnerNumberModel[] startSpinnerModels=new SpinnerNumberModel[2]

startSpinnersのモデル。

endSpinners

JSpinner[] endSpinners=new JSpinner[2]

終点(end point) の表示および値の変更をするスピナー (図 1.1 (a))。

endSpinnerModels SpinnerNumberModel[] endSpinnerModels=new SpinnerNumberModel[2]
endSpinnersのモデル。
lineSpinners

JSpinner[] lineSpinners=new JSpinner[2]

角度(angle)と直線の長さ(length) の表示および値の変更をするスピナー (図 1.1 (a))。

lineSpinnerModels SpinnerNumberModel[] lineSpinnerModels=new SpinnerNumberModel[2]
lineSpinnerSのモデル。

marginSpinners

JSpinner[] marginSpinners=new JSpinner[4]

TextBoxの内側のマージンの表示および値の変更をするスピナー (図 1.5)。

marginSpinnerModels

SpinnerNumberModel[] marginSpinnerModels=new SpinnerNumberModel[4]

marginSpinnersのモデル。

lineSpaceSpinner

JSpinner lineSpaceSpinner=null

TextBoxの行間隔の表示および値の変更をするスピナー (図 1.5)。

lineSpaceSpinnerModel

SpinnerNumberModel lineSpaceSpinnerModel=null

lineSpaceSpinnersのモデル。


メソッド

説明

コンストラクタ

public DialogOfShapeFormat()

次の設定をする。

super(ObjectTable.getDrawMain(), "Shape Format");
this.setName("DialogOfShapeFormat");
this.action=new ShapeFormatAction(this);
this.addWindowListener(action);

showDialog

public void showDialog(ShapeContainer container)

引数:

container - 図形データ表示するShapeContainer。

処理:

∙ containerをフィールド変数shapeContainerにセット。

ShapeFormatListenerをこのダイアログに設定。

∙ ダイアログ表示位置決定

containerを囲む矩形データから表示位置を決める。

∙ JTabbedPane作成、パネルをタブに設定

7個のパネルをcreateLinePanel, createRectangularPanel, createPaintStylePanel, createPropertyPanel, createDataPanel, createTextBoxPanel, createTextInfoPanel メソッドで作成し、タブに設定する。 位置, サイズ(position,size)タブには、選択図形が直線ならばcreateLinePanelで作成したパネルを、直線以外であればcreateRectangularPanelで作成したパネルを設定する。

∙ このオブジェクトのsetVisibleメソッドを呼んでダイアログを表示する。

∙ もし他のDialogOfShapeFormatが画面に表示されていたら、それを次の removeDialogメソッド削除する。

removeDialog protected void removeDialog()
このオブジェクトをsetVisible(false)メソッドで不可視にする。さらにこのオブジェクトをmenuUtilオブジェクトのremoveMenuComponentメソッドでmenuComponentList から削除する。
setScrollViewPosition

protected void setScrollViewPosition()

ビューポジションを dataScrollPanetextScrollPaneに設定する。

this.dataScrollPane.getViewport().setViewPosition(new Point(0,0));
if(this.textScrollPane!=null) this.textScrollPane.getViewport().setViewPosition(new Point(0,0));

: このメソッドはShapeFormatListenerオブジェクトのcomponentShownメソッドから呼ばれる。

createRectangularPanel

private JPanel createRectangularPanel()

処理:

図 1.1 (b)のパネルを作成して返す。
showRectangular メソッドを呼んで、スピナーに値を設定する。

showRectangular protected void showRectangular(int unitOfLength)

引数:

unitOfLength - 0: 長さの単位はピクセル, 1: 長さの単位はミリメータ

処理:

shapeContainerを参照して値を positionSpinners, centerSpinners, sizeSpinnersに設定する。.

∙ もし"unresizable" 属性がshapeContainer設定されていたら, sizeSpinnersを無効にする。

createLinePanel

private JPanel createLinePanel()

処理:

図 1.1 (a)のパネルを作成して返す。
showLine メソッドを呼んで、スピナーに値を設定する。

showLine protected void showLine(int unitOfLength)

引数:

unitOfLength - 0: pixels, 1: milimeters

処理:

shapeContainerを参照して値を startSpinners, endSpinners, lineSpinnersに設定する。

∙ もし"unresizable" 属性がshapeContainer設定されていたら, lineSpinnersを無効にする。
∙ もし"keep line direction" 属性がshapeContainer設定されていたら, lineSpinners[0] (angle spinner)を無効にする。

createPaintStylePanel

private JPanel createPaintStylePanel()

図1.1のパネルを作成する。

createPropertyPanel

private JPanel createPropertyPanel()

処理:

図 1.3のパネルを作成して返す。

unresizableBox, ratioBox, directionBox, unableConnectorBox, ungroupBox チェックボックスをパネルに加える。

showProperty

protected void showProperty()

処理:

∙ 属性をShapeContainer.getBooleanPropertyメソッドで取得。

∙ 取得したブーリアン値を unresizableBox, ratioBox, directionBox, unableConnectorBox, ungroupBox チェックボックスに設定する。

createDataPanel

private JPanel createPropertyPanel()

図1.4のパネルを作成する。

∙ 下段のInformationパネルにはJScrollPaneとJTextAreaを配置し、JTextAreaオブジェクトをJScrollPaneのViewに設定する。

createTextBoxPanel

private JPanel createTextBoxPanel()

図1.5のパネルを作成する。

createTextInfoPanel

private JPanel createTextInfoPanel()

図1.6のパネルを作成する。

getShapeContainer

public ShapeContainer getShapeContainer()

フィールド変数 shapeContainerを返す。

getDataScrollPane

public JScrollPane getDataScrollPane()

フィールド変数 dataScrollPaneを返す。

getTextScrollPane

public JScrollPane getTextScrollPane()

フィールド変数 textScrollPane を返す。

getPositionSpinners

public JSpinner[] getPositionSpinners()

フィールド変数 positionSpinnersを返す。

getPositionSpinner
Models

public SpinnerNumberModel[] getPositionSpinnerModels()

フィールド変数 positionSpinnerModels.

getSizeSpinners

public JSpinner[] getSizeSpinners()

フィールド変数 sizeSpinners.

getSizeSpinner
Models

public SpinnerNumberModel[] getSizeSpinnerModels()

フィールド変数 sizeSpinnerModels.

getCenterSpinners

public JSpinner[] getCenterSpinners()

フィールド変数 centerSpinnersを返す。

getCenterSpinner
Models

public SpinnerNumberModel[] getCenterSpinnerModels()

フィールド変数 centerSpinnerModels.

getStartSpinners

public JSpinner[] getStartSpinners()

フィールド変数 startSpinnersを返す。

getStartSpinner
Models

public SpinnerNumberModel[] getStartSpinnerModels()

フィールド変数 startSpinnerModelsを返す。

getEndSpinners

public JSpinner[] getEndSpinners()

フィールド変数 endSpinnersを返す。

getEndSpinner
Models

public SpinnerNumberModel[] getEndSpinnerModels()

フィールド変数 endSpinnerModels.

getLineSpinners

public JSpinner[] getLineSpinners()

フィールド変数 lineSpinners.

getLineSpinner
Models

public SpinnerNumberModel[] getLineSpinnerModels()

フィールド変数 lineSpinnerModels.

getMarginSpinners

public JSpinner[] getMarginSpinners()

フィールド変数 marginSpinnersを返す。

getMarginSpinner
Models

public SpinnerNumberModel[] getMarginSpinnerModels()

フィールド変数 marginSpinnerModelsを返す。

getLineSpaceSpinner

public JSpinner getLineSpaceSpinner()

フィールド変数 lineSpaceSpinnerを返す。

getLineSpaceSpinner
Models

public SpinnerNumberModel getLineSpaceSpinnerModels()

フィールド変数 lineSpaceSpinnerModelを返す。

getUnResizableBox

public JCheckBox getUnResizableBox()

フィールド変数 unresizableBoxを返す。

getRatioBox

public JCheckBox getRatioBox()

フィールド変数 ratioBoxを返す。

getDirectionBox

public JCheckBox getDirectionBox()

フィールド変数 directionBoxを返す。

getUnableConnectorBox

public JCheckBox getUnableConnectorBox()

フィールド変数 unableConnectorBoxを返す。

getUngroupBox

public JCheckBox getUngroupBox()

フィールド変数 ungroupBoxを返す。



1.2 ShapeFormatListener 戻る=>page top

class ShapeFormatListener implements ComponentListener


フィールド

説明

dialog

DialogOfShapeFormat dialog

DialogOfShapeFormatオブジェクトを設定。


メソッド

説明

コンストラクター ShapeFormatListener(DialogOfShapeFormat dialog)
引数をフィールド変数に設定。

componentResized

public void componentResized(ComponentEvent e)

ダイアログのサイズが変更になった時に呼ばれる。

DialogOfShapeFormatのサイズに応じてdataScrollPanetextScrollPaneをリサイズする。

dataScrollPanetextScrollPaneにsetPreferredSizeメソッドでサイズを設定し、それらのrevalidateメソッドを呼ぶ。さらに最後に DialogOfShapeFormat メソッドを呼ぶ。次のようにる。

dataScrollPane.setPreferredSize(newSize);
dataScrollPane.revalidate();
textScrollPane.setPreferredSize(newSize);
textScrollPane.revalidate();
this.dialog.validate();

componentShown

public void componentShown(ComponentEvent e)

DialogOfShapeFormatsetScrollViewPositionメソッドを呼ぶ。



1.3 Class SpinnersChangeListener 戻る=>page top

class SpinnersChangeListener implements ChangeListener

Field

Description

dialog

DialogOfShapeFormat dialog

DialogOfShapeFormatオブジェクトを設定する。

shapeContainer

ShapeContainer shapeContainer

shapeContainerフィールドと同じ。


Method

Description

コンストラクター SpinnersChangeListener(DialogOfShapeFormat dialog)
引数をフィールド変数に設定。

stateChanged

public void stateChanged(ChangeEvent e)

positionSpinners, sizeSpinners, centerSpinnersのどれかが書き換えられたときデータの一貫性を保障するため、他のスピナーに値を設定しなおす。

rectangularChanged

public void rectangularChanged(ChangeEvent e)

位置, サイズ(position, size)タブでスピナー値が変更されたら、関連するスピナーの値を変更し、shapeContainer を再表示する。このメソッドはshapeContainerに設定されている属性を考慮して動作する。

See=> 操作説明書 位置, サイズ(position, size)タブ, 属性(property)タブ, 図形の属性(property)とスピナーの値

ConnectionUtil.moveResize メソッドを使ってshapeContainerを移動/リサイズする。

lineChanged

public void lineChanged(ChangeEvent e)

位置, サイズ(position, size)タブでスピナー値が変更されたら、関連するスピナーの値を変更し、shapeContainer を再表示する。このメソッドはshapeContainer(直線)に設定されている属性を考慮して動作する。

See=> 操作説明書 位置, サイズ(position, size)タブ, 属性(property)タブ, 図形の属性(property)とスピナーの値

ConnectionUtil.moveResize, moveEndPointメソッドを使って直線の移動、端点の移動を実行する。

getMoveVector

private Vector2D getMoveVector(Vector2D Tvec, Vector2D move)

lineChanged メソッドから呼ばれ、directionBox が選択されているときに端点の移動先を計算する。

removeChangeListener

private void removeChangeListener()

positionSpinners - lineSpinners からChangeListenerを削除する。

addChangeListener

private void addChangeListener()

positionSpinners - lineSpinnersにChangeListenerを設定する。



1.4 ShapeFormatActionクラス 戻る=>page top

class DialogOfDrawPanelAction extends AbstractAction

フィールド

説明

dialog

DialogOfShapeFormat dialog

DialogOfShapeFormatオブジェクトを設定する。

shapeContainer

ShapeContainer shapeContainer

フィールド変数shapeContainerと同じ。

execCommand

ExecCommand execCommand=ObjectTable.getExecCommand("DialogOfShapeFormat")

ExecCommand を設定。


メソッド

説明

actionPerformed

public void actionPerformed(ActionEvent e)

super(ObjectTable.getDrawMain(), "Display all pages");
でダイアログの親コンポーネントとタイトルを設定。

ダイアログのサイズをフレームサイズから決め、dialogDimensionにセット。

(1) 図 1.1 (a)の"pixel" or "mm" ボタンが押されたら、showLineまたは showRectangularメソッドを呼んでスピナーの数値を変更する。

(2)属性パネル(property panel, 図 1.3)のチェックボックスがクリックされたとき

デフォールト属性以外が選択されたらsetPropertyメソッドで 選択図形に属性を書き込む。
また属性間の関連に応じて、他の属性に"on"/ "off"を設定したり、spinnerの状態をenable/disableに変えたりする。例えば"enable resizing"属性が"off"にされると次の処理を行う。

ratioBox, directionBoxを"off"にし(setSelected(false))、disable (setEnabled(false))にする。
② 対象図形が直線ならばlineSpinners, 矩形形状ならばsizeSpinnersをdisableにする 。

See=> 操作説明書 図形の属性(property)とスピナーの値

(3) 図 1.3の"OK" ボタンが押されたら、選択されている属性をshapeContainerに設定し、closedDialogを呼ぶ。

(4) 図 1.5の"OK" ボタンが押されたら、"TEXTBOX_LAYOUT"コマンドを作成してExecCommandexecを呼びclosedDialogメソッドを呼ぶ。もし"Cancel" ボタンが押されたらclosedDialogメソッドを呼ぶ。

(5) 図 1.5の"Cancel" ボタンが押されたら, closedDialogメソッドを呼ぶ。

setProperty

private void setProperty()

デフォールト属性以外が選択されたら、このダイアログの対象図形(shapeContainer)に属性を書き込む。 

closeDialog

private void closeDialog()

dialogフィールドのオブジェクトsetVisible(false)メソッドで不可視を設定。menuUtilオブジェクトのremoveMenuComponentメソッドでこのダイアログをmenuComponentList から削除する。

windowClosing

public void windowClosing(WindowEvent e)

closedDialogメソッドを呼ぶ。



2. 表示画面の情報ダイアログ 戻る=>page top

図 2.1 Display the list of the shape objects

図 2.2 Display the list of the MouseListeners



2.1 DialogOfDrawPanelクラス 戻る=>page top
このクラスはExecCommand.execメソッドから呼ばれる。

public class DialogOfShapeFormat extends JDialog

フィールド

説明

action

DialogOfDrawPanelAction action

The ActionListener object (DialogOfDrawPanelAction)

shapeScrollPane

JScrollPane ShapeScrollPane

”shape information”タブで表示するTextAreaのスクロールペインを設定。ダイアログのサイズが変更されたときに、それにあわせてスクロールペインのサイズを変えるのに使う。DialogOfDrawPanelListenerで処理する。

listenerScrollPane

JScrollPane ListenerScrollPane

”listener information”タブで表示するTextAreaのスクロールペインを設定。ダイアログのサイズが変更されたときに、それにあわせてスクロールペインのサイズを変えるのに使う。DialogOfDrawPanelListenerで処理する。

dialogPaneDimension

Dimension dialogDimension=new Dimension(500,300);

ダイアログの初期サイズ。


メソッド

説明

コンストラクタ

public DialogOfDrawPanel()

次の設定を行う。

super(ObjectTable.getDrawMain(),"Draw Panel Information");
this.setName("DialogOfDrawPanel");
this.action=new DialogOfDrawPanelAction(this);
this.addWindowListener(action);

showDialog

public static void showDialog(Point mousePosition)

引数:

mousePosition - マウス位置

処理:

∙ ”shape information”タブで表示するshapeInformationPanel(JPanel)と” listener information”タブで表示するlistenerInformationPanel(JPanel)しJTabbedPaneに設定。

∙ dialog.pack()、dialog.setVisible(true)でダイアログを表示。

∙ もし他のDialogOfDrawPanelオブジェクトがすでに画面に表示されていたら、removeDialogメソッドで消去する。

removeDialog protected void removeDialog()
このオブジェクトのsetVisible(false)メソッドを呼び。不可視にする。さらにmenuComponentList からremoveMenuComponentメソッドで削除する。
setScrollViewPosition

protected void setScrollViewPosition()

ビュー位置をshapeScrollPanelistenerScrollPaneに設定する。

this.shapescrollPane.getViewport().setViewPosition(new Point(0,0));
this.listenerScrollPane.getViewport().setViewPosition(new Point(0,0));

: このメソッドは、DialogOfDrawPanelListenercomponentShownメソッドから呼ばれる。 .

createShapeInfoPanel

private static JPanel createShapeInfoPanel()
図 2.1のパネルを作成しJTabbedPaneに貼り付ける。
∙ 図形一覧を表示するJTextAreaを作成し、図形一覧の文字列を設定する。
∙ 新しいJScrollPaneオブジェクトを作成しshapeScrollPaneに設定。
∙ JTextAreaをJScrollPaneのviewに設定。
∙ JScrollPaneをshapeInformationPanelに加える。
∙ Text領域に図形情報(Shapes Information)を表示する。

ContainerListから図形を読み出し、 ShapeContainer.toStringメソッドで図形情報の文字列を得る。

createListenerInfoPanel

private static JPanel createListenerInfoPanel()

図 2.2のパネルを作成しJTabbedPaneに貼り付ける。

∙ マウスリスナーを表示するJTextAreaを作成し、マウスリスナー一覧の文字列を設定する。

∙ 新しいJScrollPaneオブジェクトを作成しlistenerScrollPaneに設定。

∙ JTextAreaをJScrollPaneのviewに設定。

∙ ListenerScrollをlistenerInformationPanelに加える。

getShapeScrollPane public JScrollPane getShapeScrollPane()
shapeScrollPaneを返す。
getListenerScrollPane public JScrollPane getListenerScrollPane()
listenerScrollPaneを返す。


2.2 DialogOfDrawPanelListenerクラス 戻る=>page top

class DialogOfDrawPanelListener implements ComponentListener


フィールド

説明

dialog

DialogOfDrawPanel dialog

DialogOfDrawPanelオブジェクト。


メソッド

説明

Constructor DialogOfDrawPanelListener(DialogOfDrawPanel dialog)
引数をフィールド変数に設定。

componentResized

public void componentResized(ComponentEvent e)

このメソッドは DialogOfDrawPanelがリサイズされたときに呼ばれる。

DialogOfDrawPanelのサイズに従ってshapeScrollPanelistenerScrollPaneをリサイズする。

setPreferredSizeメソッドでshapeScrollPaneとlistenerScrollPaneに新しいサイズを設定する。さらに revalidateメソッドを呼び、最後にDialogOfDrawPanelのvalidateメソッドを呼ぶ。

shapesScrollPane.setPreferredSize(newSize);
shapesScrollPane.revalidate();
listenersScrollPane.setPreferredSize(newSize);
listenersScrollPane.revalidate();
this.dialog.validate();

componentShown

public void componentShown(ComponentEvent e)

DialogOfDrawPanelsetScrollViewPositionメソッドを呼ぶ。



2.3 DialogOfDrawPanelActionクラス 戻る=>page top

class DialogOfDrawPanelAction extends AbstractAction


フィールド

説明

dialog

DialogOfDrawPanel dialog

DialogOfDrawPanelオブジェクト。


メソッド

説明

コンストラクター DialogOfDrawPanelAction(DialogOfShapeFormat dialog)
引数をフィールド変数に設定。

actionPerformed

public void actionPerformed(ActionEvent e)

現在のところ、ボタン等は設定していないので、このメソッドは呼ばれない。

closeDialog

private void closeDialog()

dialog を不可視にしてmenuComponentListから removeMenuComponentメソッドで削除する。

windowClosing

public void windowClosing(WindowEvent e)

Calls the closedDialog method.



Copyright (c) 2009-2013
All other trademarks are property of their respective owners.