use of org.csstudio.opibuilder.model.AbstractContainerModel in project yamcs-studio by yamcs.
the class ArrayLayoutEditPolicy method createWidgetCreateCommand.
@Override
protected Command createWidgetCreateCommand(CreateRequest request) {
AbstractContainerModel container = (AbstractContainerModel) getHost().getModel();
if (!container.getChildren().isEmpty())
return null;
CompoundCommand result = new CompoundCommand("Create widget in array");
Dimension size = ((Rectangle) getConstraintFor(request)).getSize();
AbstractWidgetModel widget = (AbstractWidgetModel) request.getNewObject();
if (size == null || size.width < 1 || size.height < 1)
size = widget.getSize();
addUpdateContainerCommands(container, size, result);
WidgetCreateCommand widgetCreateCommand = new WidgetCreateCommand(widget, container, (Rectangle) getConstraintFor(request), false, true);
result.add(widgetCreateCommand);
return result;
}
use of org.csstudio.opibuilder.model.AbstractContainerModel in project yamcs-studio by yamcs.
the class LabelEditPart method registerPropertyChangeHandlers.
@Override
protected void registerPropertyChangeHandlers() {
IWidgetPropertyChangeHandler handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, final IFigure figure) {
((TextFigure) figure).setText((String) newValue);
Display.getCurrent().timerExec(10, new Runnable() {
@Override
public void run() {
if (getWidgetModel().isAutoSize())
getWidgetModel().setSize(((TextFigure) figure).getAutoSizeDimension());
}
});
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_TEXT, handler);
IWidgetPropertyChangeHandler clickableHandler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((TextFigure) figure).setSelectable(determinSelectable());
return false;
}
};
setPropertyChangeHandler(LabelModel.PROP_ACTIONS, clickableHandler);
setPropertyChangeHandler(LabelModel.PROP_TOOLTIP, clickableHandler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, final IFigure figure) {
Display.getCurrent().timerExec(10, new Runnable() {
@Override
public void run() {
if (getWidgetModel().isAutoSize()) {
getWidgetModel().setSize(((TextFigure) figure).getAutoSizeDimension());
figure.revalidate();
}
}
});
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_FONT, handler);
setPropertyChangeHandler(AbstractWidgetModel.PROP_BORDER_STYLE, handler);
setPropertyChangeHandler(AbstractWidgetModel.PROP_BORDER_WIDTH, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((TextFigure) figure).setOpaque(!(Boolean) newValue);
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_TRANSPARENT, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
if ((Boolean) newValue) {
getWidgetModel().setSize(((TextFigure) figure).getAutoSizeDimension());
figure.revalidate();
}
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_AUTOSIZE, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((TextFigure) figure).setHorizontalAlignment(H_ALIGN.values()[(Integer) newValue]);
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_ALIGN_H, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
((TextFigure) figure).setVerticalAlignment(V_ALIGN.values()[(Integer) newValue]);
return true;
}
};
setPropertyChangeHandler(LabelModel.PROP_ALIGN_V, handler);
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
AbstractWidgetModel model = getWidgetModel();
AbstractContainerModel parent = model.getParent();
parent.removeChild(model);
parent.addChild(model);
parent.selectWidget(model, true);
return false;
}
};
setPropertyChangeHandler(LabelModel.PROP_WRAP_WORDS, handler);
getWidgetModel().getProperty(LabelModel.PROP_WRAP_WORDS).addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
updatePropertyVisibility();
}
});
handler = new IWidgetPropertyChangeHandler() {
@Override
public boolean handleChange(Object oldValue, Object newValue, IFigure figure) {
if (figure instanceof WrappableTextFigure)
((WrappableTextFigure) figure).setShowScrollbar((Boolean) newValue);
return false;
}
};
setPropertyChangeHandler(LabelModel.PROP_SHOW_SCROLLBAR, handler);
}
use of org.csstudio.opibuilder.model.AbstractContainerModel in project yamcs-studio by yamcs.
the class LinkingContainerEditpart method configureDisplayModel.
/**
* @param path the path of the OPI file
*/
private synchronized void configureDisplayModel() {
// This need to be executed after GUI created.
if (getWidgetModel().getDisplayModel() == null) {
IPath path = resolveMacros(getWidgetModel().getOPIFilePath());
log.info(path.toString());
final DisplayModel tempDisplayModel = new DisplayModel(path);
getWidgetModel().setDisplayModel(tempDisplayModel);
try {
if (!path.isEmpty())
XMLUtil.fillDisplayModelFromInputStream(ResourceUtil.pathToInputStream(path), tempDisplayModel, getViewer().getControl().getDisplay());
} catch (Exception e) {
OPIBuilderPlugin.getLogger().log(Level.WARNING, "Could not reload the linking container.", e);
}
}
LinkingContainerModel widgetModel = getWidgetModel();
DisplayModel displayModel = widgetModel.getDisplayModel();
widgetModel.setDisplayModelViewer((GraphicalViewer) getViewer());
widgetModel.setDisplayModelDisplayID(widgetModel.getRootDisplayModel(false).getDisplayID());
UIBundlingThread.getInstance().addRunnable(new Runnable() {
@Override
public void run() {
LinkingContainerModel widgetModel = getWidgetModel();
widgetModel.setDisplayModelExecutionMode(getExecutionMode());
widgetModel.setDisplayModelOpiRuntime(widgetModel.getRootDisplayModel(false).getOpiRuntime());
}
});
updateConnectionListForLinkedOpi(displayModel);
if (originalPoints != null && !originalPoints.isEmpty()) {
// update connections after the figure is repainted.
getViewer().getControl().getDisplay().asyncExec(() -> updateConnectionList());
}
UIBundlingThread.getInstance().addRunnable(() -> {
layout();
if (// getExecutionMode() == ExecutionMode.RUN_MODE &&
!getWidgetModel().isAutoFit() && !getWidgetModel().isAutoSize()) {
Rectangle childrenRange = GeometryUtil.getChildrenRange(LinkingContainerEditpart.this);
getWidgetModel().setChildrenGeoSize(new Dimension(childrenRange.width + childrenRange.x + figure.getInsets().left + figure.getInsets().right - 1, childrenRange.height + childrenRange.y + figure.getInsets().top + figure.getInsets().bottom - 1));
getWidgetModel().scaleChildren();
}
((LinkingContainerFigure) getFigure()).setShowScrollBars(getWidgetModel().isShowScrollBars());
((LinkingContainerFigure) getFigure()).setZoomToFitAll(getWidgetModel().isAutoFit());
((LinkingContainerFigure) getFigure()).updateZoom();
});
// Add scripts on display model
if (getExecutionMode() == ExecutionMode.RUN_MODE) {
widgetModel.getScriptsInput().getScriptList().addAll(widgetModel.getDisplayModel().getScriptsInput().getScriptList());
}
// tempDisplayModel.removeAllChildren();
LinkedHashMap<String, String> map = new LinkedHashMap<>();
AbstractContainerModel loadTarget = displayModel;
if (!widgetModel.getGroupName().trim().equals("")) {
// $NON-NLS-1$
AbstractWidgetModel group = displayModel.getChildByName(widgetModel.getGroupName());
if (group != null && group instanceof AbstractContainerModel) {
loadTarget = (AbstractContainerModel) group;
}
}
// Load "LCID" macro whose value is unique to this instance of Linking Container.
if (widgetModel.getExecutionMode() == ExecutionMode.RUN_MODE) {
map.put("LCID", "LCID_" + getLinkingContainerID());
}
// Load system macro
if (displayModel.getMacrosInput().isInclude_parent_macros()) {
map.putAll(displayModel.getParentMacroMap());
}
// Load macro from its macrosInput
map.putAll(displayModel.getMacrosInput().getMacrosMap());
// It also include the macros on this linking container
// which includes the macros from action and global macros if included
// It will replace the old one too.
map.putAll(widgetModel.getMacroMap());
widgetModel.setMacroMap(map);
widgetModel.removeAllChildren();
widgetModel.addChildren(loadTarget.getChildren(), true);
widgetModel.setDisplayModel(displayModel);
DisplayModel parentDisplay = widgetModel.getRootDisplayModel();
parentDisplay.syncConnections();
DisplayModel parentDisplay2 = widgetModel.getRootDisplayModel(false);
if (parentDisplay != parentDisplay2)
parentDisplay2.syncConnections();
if (getWidgetModel().isAutoSize()) {
performAutosize();
}
}
use of org.csstudio.opibuilder.model.AbstractContainerModel in project yamcs-studio by yamcs.
the class ArrayLayoutEditPolicy method createAddCommand.
@Override
protected Command createAddCommand(ChangeBoundsRequest request, EditPart child, Object constraint) {
if (!(child instanceof AbstractBaseEditPart) || !(constraint instanceof Rectangle))
return super.createAddCommand(request, child, constraint);
AbstractContainerModel container = (AbstractContainerModel) getHost().getModel();
if (!container.getChildren().isEmpty())
return null;
AbstractWidgetModel widget = (AbstractWidgetModel) child.getModel();
CompoundCommand result = new CompoundCommand("Add widget to array");
addUpdateContainerCommands(container, widget.getSize(), result);
result.add(new AddWidgetCommand(container, widget, (Rectangle) constraint));
return result;
}
use of org.csstudio.opibuilder.model.AbstractContainerModel in project yamcs-studio by yamcs.
the class TextInputEditpart method reCreateWidget.
private void reCreateWidget() {
TextInputModel model = getWidgetModel();
AbstractContainerModel parent = model.getParent();
parent.removeChild(model);
parent.addChild(model);
parent.selectWidget(model, true);
}
Aggregations