<entry key="title">アプリケーションの設定</entry>\r
<entry key="btn.apply">更新</entry>\r
<entry key="btn.cancel">キャンセル</entry>\r
-<entry key="chk.askForCharactersDir">èµ·å\8b\95æ\99\82ã\81«ã\83\87ã\83¼ã\82¿ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªを選択する.</entry>\r
+<entry key="chk.askForCharactersDir">èµ·å\8b\95æ\99\82ã\81«ã\83\87ã\83¼ã\82¿ã\83\95ã\82©ã\83«ã\83\80を選択する.</entry>\r
<entry key="column.key">プロパティ名</entry>\r
<entry key="column.value">設定値</entry>\r
<entry key="column.key.width">200</entry>\r
<entry key="enableAutoColorChange">20;カラー変更時、自動的にプレビューに適用する.</entry>\r
<entry key="notDisableLayerTab">21;カラーダイアログで存在しないレイヤーをディセーブルにしない.</entry>\r
\r
-<entry key="enableDirWatch">31;ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª監視の有効・無効</entry>\r
-<entry key="disableWatchDirIfNotWritable">32;ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªに書き込み権限がない場合は監視しない</entry>\r
-<entry key="dirWatchInterval">33;ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªの監視間隔(mSec)</entry>\r
+<entry key="enableDirWatch">31;ã\83\95ã\82©ã\83«ã\83\80監視の有効・無効</entry>\r
+<entry key="disableWatchDirIfNotWritable">32;ã\83\95ã\82©ã\83«ã\83\80に書き込み権限がない場合は監視しない</entry>\r
+<entry key="dirWatchInterval">33;ã\83\95ã\82©ã\83«ã\83\80の監視間隔(mSec)</entry>\r
<entry key="noRemoveLog">34;正常時でもログを終了時に消去しない。</entry>\r
<entry key="purgeLogDays">35;起動時に古いログを消去するまでの日数。(0の場合は削除しない)</entry>\r
<entry key="informationDialogOpenMethod">36;情報ダイアログのアクションを「開く」にする。(false時は「編集」)</entry>\r
<entry key="importingDirectory">フォルダからインポート</entry>\r
<entry key="file">ファイル:</entry>\r
<entry key="fileNotFound">ファイルがありません。</entry>\r
- <entry key="directoryNotFound">ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªがありません。</entry>\r
+ <entry key="directoryNotFound">ã\83\95ã\82©ã\83«ã\83\80がありません。</entry>\r
\r
<entry key="confirm.close">キャンセルしますか?</entry>\r
<entry key="confirm">確認</entry>\r
<entry key="button.ok.edit">更新</entry>\r
<entry key="button.ok.new">作成</entry>\r
<entry key="button.cancel">キャンセル</entry>\r
- <entry key="button.openDir">ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªを表示</entry>\r
+ <entry key="button.openDir">ã\83\95ã\82©ã\83«ã\83\80を表示</entry>\r
<entry key="confirm.changestructre">構造が変更されます。よろしいですか?</entry>\r
<entry key="confirm.needchangerevision">構造が変更されます。リビジョンを更新しますか?</entry>\r
<entry key="id.caption">ID:</entry>\r
<entry key="layers.sort.caption">整列</entry>\r
<entry key="layers.moveup.caption">上へ</entry>\r
<entry key="layers.movedown.caption">下へ</entry>\r
- <entry key="layers.watchdir">ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªを監視し、パーツ画像の変更を検知できるようにする。</entry>\r
+ <entry key="layers.watchdir">ã\83\95ã\82©ã\83«ã\83\80を監視し、パーツ画像の変更を検知できるようにする。</entry>\r
<entry key="panel.basicinfomation">基本</entry>\r
<entry key="panel.colorgroup">カラーグループ</entry>\r
<entry key="panel.categories">カテゴリ</entry>\r
<entry key="layers.column.category">カテゴリ</entry>\r
<entry key="layers.column.colorgroup">カラーグループ</entry>\r
<entry key="layers.column.order">重ね順</entry>\r
- <entry key="layers.column.directory">ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª</entry>\r
+ <entry key="layers.column.directory">ã\83\95ã\82©ã\83«ã\83\80</entry>\r
<entry key="layers.column.layername.width">100</entry>\r
<entry key="layers.column.category.width">100</entry>\r
<entry key="layers.column.colorgroup.width">100</entry>\r
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">\r
<properties version="1.0">\r
<entry key="title">キャラクターなんとかJ</entry>\r
-<entry key="caption">ã\82ã\83£ã\83©ã\82¯ã\82¿ã\83¼ã\83\87ã\83¼ã\82¿ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªを選択してください。</entry>\r
-<entry key="lbl.dir">ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª:</entry>\r
+<entry key="caption">ã\82ã\83£ã\83©ã\82¯ã\82¿ã\83¼ã\83\87ã\83¼ã\82¿ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\83\95ã\82©ã\83«ã\83\80を選択してください。</entry>\r
+<entry key="lbl.dir">ã\83\95ã\82©ã\83«ã\83\80:</entry>\r
<entry key="btn.ok">選択</entry>\r
<entry key="btn.cancel">キャンセル</entry>\r
<entry key="btn.chooseDir">参照</entry>\r
<entry key="btn.clearRecentList">履歴のクリア</entry>\r
-<entry key="chk.doNotAskAgein">次å\9b\9eã\81\8bã\82\89ã\80\81ã\81\93ã\81®ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªを使用する.</entry>\r
+<entry key="chk.doNotAskAgein">次å\9b\9eã\81\8bã\82\89ã\80\81ã\81\93ã\81®ã\83\95ã\82©ã\83«ã\83\80を使用する.</entry>\r
</properties>\r
*/\r
private PartsSet lastUsePresetParts;\r
\r
+ /**\r
+ * 最後に使用した検索ダイアログ.<br>\r
+ * nullであれば一度も使用していない.<br>\r
+ * (nullでなくとも閉じられている可能性がある.)<br>\r
+ */\r
+ private SearchPartsDialog lastUseSearchPartsDialog;\r
+ \r
\r
/**\r
* アクティブなメインフレームを設定する.\r
contentPane.remove(comp);\r
}\r
// 開いている検索ダイアログを閉じる\r
- closeAllSearchDialog();\r
+ closeSearchDialog();\r
\r
PartsColorManager partsColorManager = characterData.getPartsColorManager();\r
\r
}\r
\r
/**\r
- * 「パーツ検索」ダイアログを新規に開く.<br>\r
- * ã\81\93ã\81®ã\83\80ã\82¤ã\82¢ã\83ã\82°ã\81¯å\90\8cæ\99\82ã\81«è¤\87æ\95°é\96\8bã\81\8fã\81\93ã\81¨ã\81\8cã\81§ã\81\8dる.<br>\r
+ * 「パーツ検索」ダイアログを開く.<br>\r
+ * ã\81\99ã\81§ã\81«é\96\8bã\81\84ã\81¦ã\81\84ã\82\8bã\83\80ã\82¤ã\82¢ã\83ã\82°ã\81\8cã\81\82ã\82\8cã\81°ã\80\81ã\81\9dã\82\8cã\81«ã\83\95ã\82©ã\83¼ã\82«ã\82¹ã\82\92å½\93ã\81¦る.<br>\r
*/\r
- protected void onSearch() {\r
+ protected void openSearchDialog() {\r
if (!characterData.isValid()) {\r
Toolkit tk = Toolkit.getDefaultToolkit();\r
tk.beep();\r
return;\r
}\r
\r
+ if (lastUseSearchPartsDialog != null) {\r
+ // 開いているダイアログがあれば、それにフォーカスを当てる.\r
+ if (lastUseSearchPartsDialog.isDisplayable() && lastUseSearchPartsDialog.isVisible()) {\r
+ lastUseSearchPartsDialog.requestFocus();\r
+ return;\r
+ }\r
+ }\r
+ \r
SearchPartsDialog searchPartsDlg = new SearchPartsDialog(this, characterData, partsSelectionManager);\r
+ searchPartsDlg.adjustLocation(0);\r
searchPartsDlg.setVisible(true);\r
+ lastUseSearchPartsDialog = searchPartsDlg;\r
}\r
\r
/**\r
- * すべての「パーツ検索」ダイアログを閉じる.<br>\r
- * パーツ検索ダイアログは同時に複数開けるので、開いている全部を閉じる.<br>\r
+ * 「パーツ検索」ダイアログを閉じる.<br>\r
*/\r
- protected void closeAllSearchDialog() {\r
+ protected void closeSearchDialog() {\r
+ lastUsePresetParts = null;\r
for (SearchPartsDialog dlg : SearchPartsDialog.getDialogs()) {\r
if (dlg != null && dlg.isDisplayable() && dlg.getParent() == this) {\r
dlg.dispose();\r
new MenuDataFactory("menu.edit", new MenuDataFactory[] {\r
new MenuDataFactory("edit.search", new ActionListener() {\r
public void actionPerformed(ActionEvent e) {\r
- onSearch();\r
+ openSearchDialog();\r
}\r
}),\r
new MenuDataFactory("edit.copy", new ActionListener() {\r
\r
import java.awt.BorderLayout;\r
import java.awt.Container;\r
+import java.awt.Dimension;\r
import java.awt.GridBagConstraints;\r
import java.awt.GridBagLayout;\r
import java.awt.Insets;\r
+import java.awt.Point;\r
import java.awt.event.ActionEvent;\r
import java.awt.event.ActionListener;\r
import java.awt.event.KeyEvent;\r
\r
gbc.gridx = 0;\r
gbc.gridy = 1;\r
+ gbc.gridwidth = 1;\r
gbc.weightx = 0.;\r
searchCondPanel.add(new JLabel(strings.getProperty("author"), JLabel.RIGHT), gbc);\r
\r
gbc.gridx = 1;\r
gbc.gridy = 1;\r
+ gbc.gridwidth = 2;\r
gbc.weightx = 1.;\r
ArrayList<String> authors = new ArrayList<String>();\r
authors.add("");\r
\r
gbc.gridx = 0;\r
gbc.gridy = 2;\r
+ gbc.gridwidth = 1;\r
gbc.weightx = 0.;\r
searchCondPanel.add(new JLabel(strings.getProperty("partscategory"), JLabel.RIGHT), gbc);\r
\r
gbc.gridx = 1;\r
gbc.gridy = 2;\r
+ gbc.gridwidth = 2;\r
gbc.weightx = 1.;\r
ArrayList<PartsCategory> categories = new ArrayList<PartsCategory>();\r
categories.add(null);\r
gbc.gridx = 2;\r
gbc.gridy = 0;\r
gbc.gridheight = 1;\r
+ gbc.gridwidth = 1;\r
gbc.weightx = 0.;\r
gbc.weighty = 1.;\r
gbc.anchor = GridBagConstraints.SOUTH;\r
}\r
});\r
\r
+ // テーブルのキーイベント\r
+ ActionMap tblAm = searchPartsTable.getActionMap();\r
+ InputMap tblIm = searchPartsTable.getInputMap();\r
+ tblIm.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "onSelect");\r
+ tblAm.put("onSelect", new AbstractAction() {\r
+ private static final long serialVersionUID = 1L;\r
+ public void actionPerformed(ActionEvent e) {\r
+ onSelect();\r
+ }\r
+ });\r
+ \r
JPanel btnPanel = new JPanel();\r
btnPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 10));\r
GridBagLayout btnPanelLayout = new GridBagLayout();\r
contentPane.add(searchCondPanel, BorderLayout.NORTH);\r
contentPane.add(searchResult, BorderLayout.CENTER);\r
\r
- setSize(400, 300);\r
+ setSize(250, 300);\r
setLocationRelativeTo(parent);\r
\r
// ダイアログの登録\r
}\r
\r
/**\r
+ * ダイアログの表示位置を調整する.<br>\r
+ * 横位置Xはメインフレームの右側とし、縦位置Yはメインフレームの上位置からのoffset_yを加えた位置とする.<br>\r
+ * @param offset_y オフセットY\r
+ */\r
+ public void adjustLocation(int offset_y) {\r
+ Point pt = getParent().getLocation();\r
+ Insets insets = getParent().getInsets();\r
+ pt.x += getParent().getWidth();\r
+ pt.y += (offset_y * insets.top);\r
+ setLocation(pt);\r
+ Dimension siz = getSize();\r
+ siz.height = getParent().getHeight() - offset_y;\r
+ setSize(siz);\r
+ }\r
+\r
+ /**\r
* 「選択」ボタンまたはテーブルのダブルクリックのハンドラ.<br>\r
* 選択されている行のパーツ識別子をもとに、パーツにフォーカスをあてる.<br>\r
*/\r
\r
protected void onChangeCondition() {\r
String partsNamesRaw = txtPartsName.getText();\r
+ partsNamesRaw = partsNamesRaw.replace(" ", " "); // 全角空白を半角に変換\r
String[] condPartsNames = partsNamesRaw.split("\\s+");\r
\r
PartsCategory condPartsCategory = (PartsCategory) cmbCategories.getSelectedItem();\r
return;\r
}\r
PartsCategory partsCategory = partsIdentifier.getPartsCategory();\r
+ if (isMinimizeMode(partsCategory)) {\r
+ setMinimizeModeIfOther(partsCategory, true);\r
+ }\r
ImageSelectPanel imageSelectPanel = imageSelectPanels.get(partsCategory);\r
if (imageSelectPanel != null) {\r
imageSelectPanel.setSelection(partsIdentifier);\r
}\r
\r
/**\r
- * 指定したカテゴリ以外のパネルを最小化する.\r
+ * 指定したカテゴリ以外のパネルを最小化する.<br>\r
+ * (指定したカテゴリがnullでなければ、そのカテゴリの最小化は解除される.)<br>\r
* @param partsCategory 最小化の対象外のパネル、nullの場合は不問\r
- * @param minimize 最小化する場合はtrue、falseの場合はすべてが最小化解除される.\r
+ * @param minimize æ\8c\87å®\9aã\81\97ã\81\9fã\82«ã\83\86ã\82´ã\83ªä»¥å¤\96ã\82\92æ\9c\80å°\8få\8c\96ã\81\99ã\82\8bå ´å\90\88ã\81¯trueã\80\81falseã\81®å ´å\90\88ã\81¯ã\81\99ã\81¹ã\81¦ã\81\8cæ\9c\80å°\8få\8c\96解é\99¤ã\81\95ã\82\8cã\82\8b.\r
*/\r
public void setMinimizeModeIfOther(PartsCategory partsCategory, boolean minimize) {\r
for (Map.Entry<PartsCategory, ImageSelectPanel> entry : imageSelectPanels.entrySet()) {\r