OSDN Git Service

バージョン番号を更新。
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / holders / MeMoMaConnectLineHolder.java
1 package jp.sourceforge.gokigen.memoma.holders;
2
3 import java.util.Enumeration;
4 import java.util.Hashtable;
5 import android.util.Log;
6
7 import jp.sourceforge.gokigen.memoma.Main;
8
9
10 /**
11  *   表示オブジェクト間の接続情報を保持するクラス
12  * 
13  * @author MRSa
14  *
15  */
16 public class MeMoMaConnectLineHolder
17 {
18     private final String TAG = toString();
19
20         private final IOperationHistoryHolder historyHolder;
21     public static final int ID_NOTSPECIFY = -1;
22     private Hashtable<Integer, ObjectConnector>  connectLines;
23     private Integer serialNumber = 1;
24
25     public MeMoMaConnectLineHolder(IOperationHistoryHolder historyHolder)
26     {
27         this.historyHolder = historyHolder;
28         connectLines = new Hashtable<>();
29         connectLines.clear();
30     }
31
32     public Enumeration<Integer> getLineKeys()
33     {
34         return (connectLines.keys());
35     }
36
37     public ObjectConnector getLine(Integer key)
38     {
39         return (connectLines.get(key));
40     }
41
42     public boolean disconnectLines(Integer key)
43     {
44         ObjectConnector removeTarget = connectLines.remove(key);
45         if (removeTarget != null)
46         {
47             historyHolder.addHistory(key, IOperationHistoryHolder.ChangeKind.DELETE_CONNECT_LINE, removeTarget);
48         }
49         Log.v(TAG, "DISCONNECT LINES : " + key);
50         return (true);
51     }
52
53     public void setSerialNumber(int id)
54     {
55         serialNumber = (id == ID_NOTSPECIFY) ? ++serialNumber : id;
56     }
57
58     public int getSerialNumber()
59     {
60         return (serialNumber);
61     }
62
63     public void removeAllLines()
64     {
65         connectLines.clear();
66         serialNumber = 1;
67     }
68
69     public void dumpConnectLine(ObjectConnector conn)
70     {
71         if (conn == null)
72         {
73             return;
74         }
75         Log.v(TAG, "LINE " + conn.getKey() + " [" + conn.getFromObjectKey() + " -> " + conn.getToObjectKey() + "] ");
76     }
77
78     /**
79      *    keyToRemove で指定されたobjectの接続をすべて削除する
80      *
81      * @param keyToRemove\
82      */
83     public void removeAllConnection(Integer keyToRemove)
84     {
85         Enumeration<Integer> keys = connectLines.keys();
86         while (keys.hasMoreElements())
87         {
88             Integer key = keys.nextElement();
89             ObjectConnector connector = connectLines.get(key);
90             if ((connector.getFromObjectKey() == keyToRemove)||(connector.getToObjectKey() == keyToRemove))
91             {
92                 // 削除するキーが見つかった!
93                 connectLines.remove(key);
94             }
95         }
96     }
97
98     public ObjectConnector createLine(int id)
99     {
100         ObjectConnector connector = new ObjectConnector(id, 1, 1, LineStyleHolder.LINESTYLE_STRAIGHT_NO_ARROW, LineStyleHolder.LINESHAPE_NORMAL, LineStyleHolder.LINETHICKNESS_THIN, historyHolder);
101         connectLines.put(id, connector);
102         return (connector);
103     }
104
105     public ObjectConnector setLines(Integer fromKey, Integer toKey, LineStyleHolder lineHolder)
106     {
107         ObjectConnector connector = new ObjectConnector(serialNumber, fromKey, toKey, lineHolder.getLineStyle(), lineHolder.getLineShape(), lineHolder.getLineThickness(), historyHolder);
108
109         connectLines.put(serialNumber, connector);
110         serialNumber++;
111         return (connector);
112     }
113 }