CustomVarSelectionTableModel.java
// @formatter:off
/*******************************************************************************
*
* This file is part of JMad.
*
* Copyright (c) 2008-2011, CERN. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
// @formatter:on
package cern.accsoft.steering.jmad.gui.panels.var;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import cern.accsoft.steering.jmad.domain.var.TwissVariable;
import cern.accsoft.steering.jmad.domain.var.custom.CustomVariable;
import cern.accsoft.steering.jmad.model.JMadModel;
import cern.accsoft.steering.jmad.model.manage.JMadModelManager;
import cern.accsoft.steering.jmad.model.manage.JMadModelManagerAdapter;
import cern.accsoft.steering.jmad.model.manage.StrengthVarManagerListener;
/**
* This panel allows to parse a variable-file and add these variables to the twiss results.
*
* @author Kajetan Fuchsberger (kajetan.fuchsberger at cern.ch)
*/
public class CustomVarSelectionTableModel extends AbstractVarSelectionTableModel {
private static final long serialVersionUID = 1630862227442352343L;
private JMadModelManager modelManager;
private int columnCount;
{
updateColumnCounts();
}
private final static int COL_NAME = 0;
private final static int COL_EXPRESSION = 1;
private final static int COL_COMMENT = 2;
/** All the variables to display */
private List<CustomVariable> variables = new ArrayList<CustomVariable>();
StrengthVarManagerListener strengthVarListener = new StrengthVarManagerListener() {
@Override
public void changedData() {
JMadModel model = modelManager.getActiveModel();
if (model != null) {
variables = model.getStrengthsAndVars().getVariables();
} else {
variables = Collections.emptyList();
}
fireTableDataChanged();
}
};
@Override
public int getColumnCount() {
return columnCount;
}
@Override
public int getRowCount() {
return variables.size();
}
@Override
public Object getValueAt(int row, int col) {
CustomVariable variable = variables.get(row);
switch (col - axesCount) {
case -1:
return getSelectedVarManager().getSelectedVariables().contains(variable);
case COL_NAME:
return variable.getMadxName();
case COL_EXPRESSION:
return variable.getExpression();
case COL_COMMENT:
return variable.getComment();
default:
return null;
}
}
@Override
public Class<?> getColumnClass(int col) {
switch (col - axesCount) {
case -1:
return Boolean.class;
case COL_NAME:
case COL_EXPRESSION:
case COL_COMMENT:
return String.class;
default:
return null;
}
}
@Override
public String getColumnName(int col) {
switch (col - axesCount) {
case -1:
return "plot";
case COL_NAME:
return "variable";
case COL_EXPRESSION:
return "expression";
case COL_COMMENT:
return "comment";
default:
return null;
}
}
@Override
public boolean isCellEditable(int row, int col) {
if ((axesCount > 0) && (col == 0)) {
return true;
} else {
return false;
}
}
@Override
public void setValueAt(Object value, int row, int col) {
CustomVariable variable = variables.get(row);
switch (col - axesCount) {
case -1:
if ((Boolean) value) {
getSelectedVarManager().add(variable);
} else {
getSelectedVarManager().remove(variable);
}
fireTableDataChanged();
break;
}
}
@Override
public List<? extends TwissVariable> getAvailableVariables() {
return variables;
}
@Override
protected void updateColumnCounts() {
columnCount = axesCount + 3;
}
public void setModelManager(JMadModelManager modelManager) {
this.modelManager = modelManager;
modelManager.addListener(new JMadModelManagerAdapter() {
@Override
public void changedActiveModel(JMadModel newActiveModel) {
if(newActiveModel == null) {
return;
}
newActiveModel.getStrengthVarManager().addListener(strengthVarListener);
}
});
}
}