use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class PVComposite method createPVProperties.
private void createPVProperties(PVInfo pvInfo) {
IPV pv = pvInfo.getPV();
StringBuilder stateInfo = new StringBuilder();
if (!pv.isStarted()) {
stateInfo.append("Not started");
} else if (pv.isConnected()) {
stateInfo.append("Connected");
if (pv.isPaused()) {
stateInfo.append(" Paused");
} else {
stateInfo.append(" Running");
}
} else {
stateInfo.append("Connecting");
}
createKeyValueTextPair("Name", pv.getName());
createKeyValueTextPair("State", stateInfo.toString());
createSeparator();
if (pv.getValue() != null) {
createKeyValueTextPair("Last Received Value", pv.getValue().toString());
Display displayInfo = VTypeHelper.getDisplayInfo(pv.getValue());
if (displayInfo != null) {
createKeyValueTextPair("Units", displayInfo.getUnits());
createKeyValueTextPair("Precision", "" + displayInfo.getFormat().getMaximumFractionDigits());
createKeyValueTextPair("Display Low", "" + displayInfo.getLowerDisplayLimit());
createKeyValueTextPair("Display High", "" + displayInfo.getUpperDisplayLimit());
createKeyValueTextPair("Alarm Low", "" + displayInfo.getLowerAlarmLimit());
createKeyValueTextPair("Warning Low", "" + displayInfo.getLowerWarningLimit());
createKeyValueTextPair("Warning High", "" + displayInfo.getUpperWarningLimit());
createKeyValueTextPair("Alarm High", "" + displayInfo.getUpperAlarmLimit());
}
}
}
use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class AbstractBaseEditPart method deactivate.
@Override
public void deactivate() {
if (isActive()) {
doDeActivate();
ActionsInput input = getWidgetModel().getActionsInput();
for (AbstractWidgetAction a : input.getActionsList()) {
a.dispose();
}
super.deactivate();
// remove listener from all properties.
for (String id : getWidgetModel().getAllPropertyIDs()) {
getWidgetModel().getProperty(id).removeAllPropertyChangeListeners();
}
if (executionMode == ExecutionMode.RUN_MODE) {
// remove script listeners before stopping PV.
for (ScriptData scriptData : scriptDataList) {
ScriptService.getInstance().unRegisterScript(scriptData);
}
if (hasStartedPVs) {
// we should not attempt to stop those pvs; this can happen with linking container
for (Object pv : pvMap.values().toArray()) {
((IPV) pv).stop();
}
}
}
propertyListenerMap.clear();
// propertyListenerMap = null;
}
}
use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class PVWidgetConnectionHandler method markWidgetAsDisconnected.
@Override
protected void markWidgetAsDisconnected(IPV pv) {
super.markWidgetAsDisconnected(pv);
IPVWidgetEditpart pvWidgetEditpart = (IPVWidgetEditpart) editPart;
final IPV controlPV = pvWidgetEditpart.getControlPV();
if (controlPV != null && controlPV == pv) {
UIBundlingThread.getInstance().addRunnable(editPart.getRoot().getViewer().getControl().getDisplay(), new Runnable() {
@Override
public void run() {
pvWidgetEditpart.setControlEnabled(false);
}
});
}
}
use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class PVWidgetEditpartDelegate method doDeActivate.
public void doDeActivate() {
if (pvsHaveBeenStarted) {
for (IPV pv : pvMap.values()) pv.stop();
pvsHaveBeenStarted = false;
}
for (String pvPropID : pvListenerMap.keySet()) {
pvMap.get(pvPropID).removeListener(pvListenerMap.get(pvPropID));
}
pvMap.clear();
pvListenerMap.clear();
stopPulsing();
}
use of org.csstudio.simplepv.IPV in project yamcs-studio by yamcs.
the class ScrollbarEditPart method registerLoadLimitsListener.
/**
*/
private void registerLoadLimitsListener() {
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
final ScrollBarModel model = getWidgetModel();
if (model.isLimitsFromPV()) {
IPV pv = getPV(AbstractPVWidgetModel.PROP_PVNAME);
if (pv != null) {
if (pvLoadLimitsListener == null)
pvLoadLimitsListener = new IPVListener.Stub() {
@Override
public void valueChanged(IPV pv) {
VType value = pv.getValue();
Display displayInfo = VTypeHelper.getDisplayInfo(value);
if (value != null && displayInfo != null) {
Display new_meta = displayInfo;
if (meta == null || !meta.equals(new_meta)) {
meta = new_meta;
model.setPropertyValue(ScrollBarModel.PROP_MAX, meta.getUpperDisplayLimit());
model.setPropertyValue(ScrollBarModel.PROP_MIN, meta.getLowerDisplayLimit());
}
}
}
};
pv.addListener(pvLoadLimitsListener);
}
}
}
}
Aggregations