テキストの各行をキーと値に分離し、複数テキストファイルを読み込み、キーを突き合わせ照合し、その結果を表示するGUIユーテリティです。
リビジョン | 55e42793975fd2311818b2d61ac1b769ce2093ec (tree) |
---|---|
日時 | 2011-11-06 01:36:25 |
作者 | seraphy <seraphy@dime...> |
コミッター | seraphy |
・ データの削除
@@ -1,9 +1,14 @@ | ||
1 | 1 | o フィルタ結果で行がなくなっても列そのものは残す |
2 | -o データの削除 | |
3 | 2 | o フィルタ状態の保存 |
4 | 3 | o ステータスバーにモードを表示 |
4 | +o インポートが遅い理由を探す | |
5 | +p メニューの有効無効はモデルのデータ変更イベントにするべき? | |
6 | + checkEnableSave(); | |
7 | + checkEnableNew(); | |
8 | + checkEnableRemoveColumn(); | |
5 | 9 | |
6 | 10 | x データがなければ灰色 |
7 | 11 | x 連続するキーは非表示か薄い表示 |
8 | 12 | x ImportDataDialogModelの永続化 |
13 | +x データの削除 11/5 | |
9 | 14 |
@@ -362,7 +362,7 @@ | ||
362 | 362 | <DimensionLayout dim="0"> |
363 | 363 | <Group type="103" groupAlignment="0" attributes="0"> |
364 | 364 | <Group type="102" alignment="1" attributes="0"> |
365 | - <Component id="statusMessageLabel" pref="225" max="32767" attributes="0"/> | |
365 | + <Component id="statusMessageLabel" pref="235" max="32767" attributes="0"/> | |
366 | 366 | <EmptySpace max="-2" attributes="0"/> |
367 | 367 | <Component id="progressBar" min="-2" max="-2" attributes="0"/> |
368 | 368 | <EmptySpace max="-2" attributes="0"/> |
@@ -873,13 +873,30 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
873 | 873 | } |
874 | 874 | } |
875 | 875 | |
876 | + /** | |
877 | + * データソースをドロップダウンで表示するためのラップインターフェイス.<br> | |
878 | + */ | |
876 | 879 | private interface LineDataListItemDisplay { |
877 | 880 | |
881 | + /** | |
882 | + * ラップされているデータソースを取得する | |
883 | + * @return データソース | |
884 | + */ | |
878 | 885 | LineDataList get(); |
879 | 886 | |
887 | + /** | |
888 | + * データソースのインデックスを取得する. | |
889 | + * @return インデックス | |
890 | + */ | |
891 | + int getIndex(); | |
892 | + | |
893 | + /** | |
894 | + * データソースの文字列表現. | |
895 | + * (タイトルを返す)<br> | |
896 | + * @return | |
897 | + */ | |
880 | 898 | @Override |
881 | 899 | String toString(); |
882 | - | |
883 | 900 | } |
884 | 901 | |
885 | 902 | /** |
@@ -889,6 +906,7 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
889 | 906 | public void onRemoveColumn() { |
890 | 907 | int mx = dataViewTableModel.getNumOfLineDataLists(); |
891 | 908 | if (mx <= 1) { |
909 | + // 最低2列以上なければ削除できない. | |
892 | 910 | return; |
893 | 911 | } |
894 | 912 |
@@ -896,12 +914,18 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
896 | 914 | ArrayList<Object> items = new ArrayList<Object>(); |
897 | 915 | for (int idx = 0; idx < mx; idx++) { |
898 | 916 | final LineDataList lineDataList = dataViewTableModel.getLineDataList(idx); |
917 | + final int selIdx = idx; | |
899 | 918 | LineDataListItemDisplay item = new LineDataListItemDisplay() { |
900 | 919 | |
901 | 920 | @Override |
902 | 921 | public LineDataList get() { |
903 | 922 | return lineDataList; |
904 | 923 | } |
924 | + | |
925 | + @Override | |
926 | + public int getIndex() { | |
927 | + return selIdx; | |
928 | + } | |
905 | 929 | |
906 | 930 | @Override |
907 | 931 | public String toString() { |
@@ -911,6 +935,7 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
911 | 935 | items.add(item); |
912 | 936 | } |
913 | 937 | |
938 | + // ドロップダウンコンボの表示 | |
914 | 939 | DefaultComboBoxModel comboboxModel = new DefaultComboBoxModel( |
915 | 940 | items.toArray(new Object[items.size()])); |
916 | 941 |
@@ -928,17 +953,28 @@ public class TextKeyMatcherView extends FrameView implements ExitListener { | ||
928 | 953 | |
929 | 954 | Number ret = (Number) optionPane.getValue(); |
930 | 955 | if (ret == null || ret.intValue() != JOptionPane.YES_OPTION) { |
956 | + // キャンセルされた場合 | |
931 | 957 | return; |
932 | 958 | } |
933 | 959 | |
960 | + // ドロップダウンで選択されたデータソースの取得 | |
934 | 961 | LineDataListItemDisplay selItem = |
935 | 962 | (LineDataListItemDisplay) removeColumnComboBox.getSelectedItem(); |
936 | 963 | if (selItem == null) { |
937 | 964 | return; |
938 | 965 | } |
939 | 966 | LineDataList lineDataList = selItem.get(); |
940 | - | |
941 | - logger.log(Level.INFO, "lineDataList={0}", lineDataList.getTitle()); | |
967 | + int selidx = selItem.getIndex(); | |
968 | + logger.log(Level.INFO, "remove lineDataLis{0}t={1}", | |
969 | + new Object[] {selidx, lineDataList.getTitle()}); | |
970 | + | |
971 | + // モデルからカラムの削除 | |
972 | + dataViewTableModel.removeLineDataList(selidx); | |
973 | + | |
974 | + // メニューの更新 | |
975 | + checkEnableSave(); | |
976 | + checkEnableNew(); | |
977 | + checkEnableRemoveColumn(); | |
942 | 978 | } |
943 | 979 | |
944 | 980 | private void checkEnableSave() { |