JAL-4158 first attempt at stashing colours for contact matrix groups and allowing...
[jalview.git] / src / jalview / datamodel / SeqDistanceContactMatrix.java
1 package jalview.datamodel;
2
3 import java.awt.Color;
4 import java.util.BitSet;
5 import java.util.HashMap;
6 import java.util.List;
7
8 /**
9  * Dummy contact matrix based on sequence distance
10  * 
11  * @author jprocter
12  *
13  */
14 public class SeqDistanceContactMatrix implements ContactMatrixI
15 {
16   private static final String SEQUENCE_DISTANCE = "SEQUENCE_DISTANCE";
17   private int width = 0;
18
19   public SeqDistanceContactMatrix(int width)
20   {
21     this.width = width;
22   }
23
24   @Override
25   public float getMin()
26   {
27     return 0f;
28   }
29
30   @Override
31   public float getMax()
32   {
33     return width;
34   }
35
36   @Override
37   public ContactListI getContactList(final int column)
38   {
39     if (column < 0 || column >= width)
40     {
41       return null;
42     }
43     return new ContactListImpl(new ContactListProviderI()
44     {
45
46       int p = column;
47
48       // @Override
49       // public Color getColorForScore(int column)
50       // {
51       // return jalview.util.ColorUtils.getGraduatedColour(Math.abs(column-p),
52       // 0, Color.white, width, Color.magenta);
53       // }
54       // @Override
55       // public Color getColorForRange(int from_column, int to_column)
56       // {
57       // return jalview.util.ColorUtils.getGraduatedColour(
58       // Math.abs(to_column + from_column - 2 * p) / 2, 0, Color.white, width,
59       // Color.magenta);
60       // }
61
62       @Override
63       public int getContactHeight()
64       {
65         return width;
66
67       }
68
69       @Override
70       public int getPosition()
71       {
72         return p;
73       }
74
75       @Override
76       public double getContactAt(int column)
77       {
78         return Math.abs(column - p);
79       }
80     });
81   }
82
83   @Override
84   public boolean hasReferenceSeq()
85   {
86     // TODO Auto-generated method stub
87     return false;
88   }
89
90   @Override
91   public SequenceI getReferenceSeq()
92   {
93     // TODO Auto-generated method stub
94     return null;
95   }
96
97   @Override
98   public String getAnnotDescr()
99   {
100     return "Sequence distance matrix";
101   }
102
103   @Override
104   public String getAnnotLabel()
105   {
106     return "Sequence Distance";
107   }
108
109   @Override
110   public String getType()
111   {
112     return SEQUENCE_DISTANCE;
113   }
114
115   @Override
116   public int getWidth()
117   {
118     return width;
119   }
120
121   @Override
122   public int getHeight()
123   {
124     return width;
125   }
126   private List<BitSet> groups=null;
127   @Override
128   public void updateGroups(List<BitSet> colGroups)
129   {
130     groups = colGroups;
131   }
132   @Override
133   public boolean hasGroups()
134   {
135     return groups!=null;
136   }
137   @Override
138   public List<BitSet> getGroups()
139   {
140     return groups;
141   }  
142
143   HashMap<BitSet,Color> colorMap = new HashMap<>();
144   @Override 
145   public Color getColourForGroup(BitSet bs)
146   {
147     if (bs==null) {
148       return Color.white;
149     }
150     Color groupCol=colorMap.get(bs);
151     if (groupCol==null)
152     {
153       return Color.white;
154     }
155     return groupCol;
156   }
157   @Override 
158   public void setColorForGroup(BitSet bs,Color color)
159   {
160     colorMap.put(bs,color);
161   }
162 }