OSDN Git Service

・UIの表示で「ディレクトリ」とあるものを「フォルダ」に改めた。
authorseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Tue, 22 Mar 2011 17:28:36 +0000 (17:28 +0000)
committerseraphy <seraphy@5b6e9025-a2e8-4882-b233-f889982098c5>
Tue, 22 Mar 2011 17:28:36 +0000 (17:28 +0000)
・UI調整、検索ダイアログの位置調整、同時に1つしか開かないように修正(複数開いても、あまり利用価値がなかったため)
・検索ダイアログでパーツした場合にカテゴリパネルが最小化していれば解除するように修正。

git-svn-id: https://svn.sourceforge.jp/svnroot/charactermanaj/trunk@19 5b6e9025-a2e8-4882-b233-f889982098c5

CharacterManaJ.jar
charactermanaj.exe
resources/languages/appconfigdialog_ja.xml
resources/languages/importwizdialog_ja.xml
resources/languages/profileditdialog_ja.xml
resources/languages/selectCharatersDirDialog_ja.xml
src/charactermanaj/ui/MainFrame.java
src/charactermanaj/ui/SearchPartsDialog.java
src/charactermanaj/ui/model/PartsSelectionManager.java

index 10ca68b..05430ef 100644 (file)
Binary files a/CharacterManaJ.jar and b/CharacterManaJ.jar differ
index d95676a..eb11d9f 100644 (file)
Binary files a/charactermanaj.exe and b/charactermanaj.exe differ
index 892cb79..0e5c58d 100644 (file)
@@ -6,7 +6,7 @@
 <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
@@ -34,9 +34,9 @@
 <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
index e541d53..7e4b80e 100644 (file)
@@ -12,7 +12,7 @@
        <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
index 363a4a3..97c0ff8 100644 (file)
@@ -5,7 +5,7 @@
        <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
@@ -34,7 +34,7 @@
        <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
@@ -57,7 +57,7 @@
        <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
index b614c7a..aa80b5c 100644 (file)
@@ -1,11 +1,11 @@
 <!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
index 98f63ff..b14fb27 100644 (file)
@@ -206,6 +206,13 @@ public class MainFrame extends JFrame {
         */\r
        private PartsSet lastUsePresetParts;\r
        \r
+       /**\r
+        * 最後に使用した検索ダイアログ.<br>\r
+        * nullであれば一度も使用していない.<br>\r
+        * (nullでなくとも閉じられている可能性がある.)<br>\r
+        */\r
+       private SearchPartsDialog lastUseSearchPartsDialog;\r
+       \r
        \r
        /**\r
         * アクティブなメインフレームを設定する.\r
@@ -560,7 +567,7 @@ public class MainFrame extends JFrame {
                        contentPane.remove(comp);\r
                }\r
                // 開いている検索ダイアログを閉じる\r
-               closeAllSearchDialog();\r
+               closeSearchDialog();\r
                \r
                PartsColorManager partsColorManager = characterData.getPartsColorManager();\r
 \r
@@ -1259,25 +1266,35 @@ public class MainFrame extends JFrame {
        }\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
@@ -1945,7 +1962,7 @@ public class MainFrame extends JFrame {
                                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
index 8adfce1..613e271 100644 (file)
@@ -2,9 +2,11 @@ package charactermanaj.ui;
 \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
@@ -146,11 +148,13 @@ public class SearchPartsDialog extends JDialog {
                \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
@@ -160,11 +164,13 @@ public class SearchPartsDialog extends JDialog {
                \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
@@ -175,6 +181,7 @@ public class SearchPartsDialog extends JDialog {
                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
@@ -208,6 +215,17 @@ public class SearchPartsDialog extends JDialog {
                        }\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
@@ -282,7 +300,7 @@ public class SearchPartsDialog extends JDialog {
                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
@@ -314,6 +332,22 @@ public class SearchPartsDialog extends JDialog {
        }\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
@@ -328,6 +362,7 @@ public class SearchPartsDialog extends JDialog {
        \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
index 8daa4f1..0b61010 100644 (file)
@@ -169,6 +169,9 @@ public class PartsSelectionManager {
                        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
@@ -249,9 +252,10 @@ public class PartsSelectionManager {
        }\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