1 /*
2 * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3 * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4 *
5 * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6 * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7 * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8 * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12 * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13 * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14 * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15 * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16 * OR MODIFICATIONS.
17 * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18 * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19 * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20 * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
21 */
22
23 package de.desy.acop.displayers.table;
24
25 import com.cosylab.gui.components.table.cells.PatternCell;
26 import com.cosylab.gui.displayers.DataConsumer;
27 import com.cosylab.gui.displayers.DisplayerUtilities;
28 import com.cosylab.gui.displayers.DoubleSeqConsumer;
29 import com.cosylab.util.CommonException;
30
31 import de.desy.acop.displayers.AcopTable;
32
33 /**
34 * Table column for presenting numerical values in binary form.
35 *
36 * @author Jaka Bobnar, Cosylab
37 *
38 */
39 public class AcopBitTableColumn extends AcopTableColumn implements DoubleSeqConsumer {
40
41 @SuppressWarnings("unchecked")
42 public static final Class[] SUPPORTED_CONSUMER_TYPES = {
43 DoubleSeqConsumer.class
44 };
45 public static final String[] SUPPORTED_CHARACTERISTICS = {};
46
47 protected double[] rows;
48
49 /**
50 * Constructs new AcopBitTableColumn.
51 *
52 */
53 public AcopBitTableColumn() {
54 super();
55 }
56
57 /**
58 * Constructs new AcopBitTableColumn.
59 *
60 * @param table parent table
61 * @param uniqueName unique name of the column
62 * @param shortName short name of the column
63 */
64 public AcopBitTableColumn(AcopTable table, String uniqueName, String shortName) {
65 super(table, uniqueName, shortName);
66 rows = new double[0];
67 cells = new PatternCell[0];
68 }
69
70 /*
71 * (non-Javadoc)
72 * @see de.desy.acop.displayers.tools.table.AcopTableColumn#getColumnClass()
73 */
74 @Override
75 public Class<?> getColumnClass() {
76 return PatternCell.class; //String.class;
77 }
78
79 /*
80 * (non-Javadoc)
81 * @see de.desy.acop.displayers.tools.AcopNumericTableColumn#getValue(int)
82 */
83 public Object getValue(int rowIndex) {
84 if (rows == null || rowIndex >= rows.length || rowIndex < 0) return null;
85 if (cells[rowIndex] == null) {
86 cells[rowIndex] = new PatternCell(displayerParameters.getName()+"[" + rowIndex+"]", this, (long)rows[rowIndex], null);
87 cells[rowIndex].putAllCharacteristics(characteristics);
88 } else {
89 cells[rowIndex].setValue((long)rows[rowIndex]);
90 }
91 setCharacteristicsOnCell(cells[rowIndex]);
92 return cells[rowIndex];
93 }
94
95 /*
96 * (non-Javadoc)
97 * @see com.cosylab.gui.displayers.DoubleSeqConsumer#updateValue(long, double[])
98 */
99 public void updateValue(long timestamp, double[] value) throws CommonException {
100 rows = value;
101 if (cells.length != value.length) {
102 cells = new PatternCell[value.length];
103 }
104 fireColumnChanged();
105 }
106
107 /* (non-Javadoc)
108 * @see com.cosylab.gui.displayers.DataConsumer#getSupportedCharacteristics()
109 */
110 public String[] getSupportedCharacteristics() {
111 return DisplayerUtilities.combineCharacteristics(DisplayerUtilities.COMMON_NUMERIC_DISPLAYER_CHARACTERISTICS,
112 SUPPORTED_CHARACTERISTICS);
113 }
114
115 /* (non-Javadoc)
116 * @see com.cosylab.gui.displayers.DataConsumer#getSupportedConsumerTypes()
117 */
118 @SuppressWarnings("unchecked")
119 public Class<DataConsumer>[] getSupportedConsumerTypes() {
120 return SUPPORTED_CONSUMER_TYPES;
121 }
122
123 }