source: java/main/src/main/java/com/framsticks/gui/table/TableModel.java @ 102

Last change on this file since 102 was 102, checked in by psniegowski, 11 years ago

HIGHLIGHTS:

for Joinables running

CHANGELOG:
Add WorkPackageLogic? and classes representing prime experiment state.

Add classes for PrimeExperiment? state.

Extract single netload routine in Simulator.

Working netload with dummy content in PrimeExperiment?.

More development with NetLoadSaveLogic? and PrimeExperiment?.

Improvement around prime.

Improve BufferedDispatcher?.isActive logic.

Add prime-all.xml configuration.

Manual connecting to existing simulators from GUI.

Guard in SimulatorConnector? against expdef mismatch.

Guard against empty target dispatcher in BufferedDispatcher?.

Make BufferedDispatcher? a Dispatcher (and Joinable).

Minor improvements.

Done StackedJoinable?, improve Experiment.

Develop StackedJoinable?.

Add StackedJoinable? utility joinables controller.

Add dependency on apache-commons-lang.

Add ready ListChange? on Simulators.

Improve hints in ListChange?.

Several improvements.

Found bug with dispatching in Experiment.

Minor improvements.

Fix bug with early finishing Server.

Many changes in Dispatching.

Fix bug with connection.

Do not obfuscate log with socket related exceptions.

Add SocketClosedException?.

Add SimulatorConnector?.

Work out conception of experiment composing of logics building blocks.

Rename SinkInterface? to Sink.

Move saving of Accesses into AccessOperations?.

Some improvements to Experiment.

Improve joinables.

Fix issue with joinables closing.

Add direct and managed consoles to popup menu.

File size: 4.2 KB
Line 
1package com.framsticks.gui.table;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.List;
6
7import javax.swing.JCheckBox;
8import javax.swing.JComponent;
9import javax.swing.JTable;
10import javax.swing.UIManager;
11
12import org.apache.logging.log4j.Logger;
13import org.apache.logging.log4j.LogManager;
14
15import com.framsticks.gui.Frame;
16import com.framsticks.params.Access;
17import com.framsticks.params.ListAccess;
18import com.framsticks.params.Param;
19import com.framsticks.params.PrimitiveParam;
20import com.framsticks.params.types.ProcedureParam;
21import com.framsticks.util.lang.Casting;
22
23public class TableModel extends AbstractTableModel {
24
25        private static final Logger log = LogManager.getLogger(TableModel.class);
26
27        protected ListAccess access;
28        protected Access elementAccess;
29        protected final List<Column> columns = new ArrayList<>();
30        protected final ListPanel listPanel;
31        protected JTable table;
32
33        /**
34         * @param listPanel
35         */
36        public TableModel(ListPanel listPanel) {
37                this.listPanel = listPanel;
38        }
39
40        /**
41         * @return the listPanel
42         */
43        public ListPanel getListPanel() {
44                return listPanel;
45        }
46
47        public JTable getTable() {
48                return listPanel.getTable();
49        }
50
51
52        /**
53         * @param table the table to set
54         */
55        public void setupTable() {
56                getTable().setDefaultRenderer(ProcedureParam.class, new ProcedureRenderer());
57                getTable().setDefaultEditor(ProcedureParam.class, new ProcedureEditor(new JCheckBox()));
58        }
59
60        public void attachSource(ListAccess access) {
61                this.access = Casting.assertCast(ListAccess.class, access.cloneAccess().select(access.getSelected()));
62
63                this.elementAccess = this.access.getElementAccess().cloneAccess();
64                log.debug("attached {}", access);
65                refreshAll();
66        }
67
68
69        @Override
70        public Class<?> getColumnClass(int columnIndex) {
71                // log.debug("returning column type {}", columnParams.get(columnIndex).getStorageType());
72                return columns.get(columnIndex).getColumnClass();
73        }
74
75        @Override
76        public int getColumnCount() {
77                // log.debug("returning column count {}", columnParams.size());
78                return columns.size();
79        }
80
81        @Override
82        public String getColumnName(int columnIndex) {
83                return columns.get(columnIndex).getParam().getName();
84        }
85
86        @Override
87        public int getRowCount() {
88                // log.debug("returning row count {}", access.getParamCount());
89                return access == null ? 0 : access.getParamCount();
90        }
91
92        @Override
93        public Object getValueAt(int rowIndex, int columnIndex) {
94                assert (rowIndex < access.getParamCount() && columnIndex < columns.size());
95
96                return columns.get(columnIndex).getValueAt(rowIndex);
97        }
98
99        @Override
100        public boolean isCellEditable(int rowIndex, int columnIndex) {
101                return columns.get(columnIndex).isEditable();
102        }
103
104
105
106        @Override
107        public void setValueAt(Object value, int rowIndex, int columnIndex) {
108                assert (rowIndex < access.getParamCount() && columnIndex < columns.size());
109                // Object object = getObjectAt(rowIndex, columnIndex);
110                // if (object == null) {
111                //      return;
112                // }
113                columns.get(columnIndex).setValueAt(rowIndex, value);
114        }
115
116        public void addColumn(Column column) {
117                log.debug("added {}", column);
118                columns.add(column);
119        }
120
121        /**
122         * @return the access
123         */
124        public ListAccess getAccess() {
125                return access;
126        }
127
128        /**
129         * @return the elementAccess
130         */
131        public Access getElementAccess() {
132                return elementAccess;
133        }
134
135        /**
136         * @return the columnParams
137         */
138        public List<Column> getColumns() {
139                return Collections.unmodifiableList(columns);
140        }
141
142
143        public boolean addColumnIfSupported(Param param) {
144                if (param instanceof PrimitiveParam) {
145                        addColumn(new PrimitiveColumn((PrimitiveParam<?>) param, this));
146                        return true;
147                }
148                if (param instanceof ProcedureParam) {
149                        if (((ProcedureParam) param).getArgumentsType().size() == 0) {
150                                addColumn(new ProcedureColumn((ProcedureParam) param, this));
151                                return true;
152                        }
153                        return false;
154                }
155                return false;
156        }
157
158        public static void transferCellAppeariance(JTable table, JComponent component, boolean isSelected) {
159                if (isSelected) {
160                        component.setForeground(table.getSelectionForeground());
161                        component.setBackground(table.getSelectionBackground());
162                } else {
163                        component.setForeground(table.getForeground());
164                        component.setBackground(UIManager.getColor("Button.background"));
165                }
166
167        }
168
169        public Frame getFrame() {
170                return listPanel.getFrame();
171        }
172
173}
Note: See TracBrowser for help on using the repository browser.