use of maspack.properties.HostList in project artisynth_core by artisynth.
the class SelectionPopup method createPropertyDialog.
public void createPropertyDialog(Collection<? extends ModelComponent> selectedItems) {
HostList hostList = new HostList(selectedItems);
PropTreeCell tree = hostList.commonProperties(null, /* allowReadonly= */
true);
tree.removeDescendant("renderProps");
if (tree.numChildren() == 0) {
JOptionPane.showMessageDialog(myParentGUIComponent, "No common properties for selected components", "no common properties", JOptionPane.INFORMATION_MESSAGE);
} else {
PropertyDialog propDialog = new PropertyDialog("Edit properties", tree, hostList, "OK Cancel LiveUpdate");
propDialog.setScrollable(true);
if (myLocatePropEditClose) {
GuiUtils.locateRelative(propDialog, myLastBounds, 0.5, 0.5, 0, 0.5);
} else {
propDialog.locateRight(myMain.getFrame());
}
// propDialog.setSynchronizeObject (myMain.getRootModel());
myMain.registerWindow(propDialog);
propDialog.setTitle("Properties for " + getNameForSelection(selectedItems));
propDialog.setVisible(true);
}
}
use of maspack.properties.HostList in project artisynth_core by artisynth.
the class PropertyWidgetDialog method createEditingProperty.
private EditingProperty createEditingProperty(Property prop) {
if (prop.getHost() == null) {
throw new InternalErrorException("Property " + prop.getName() + " does not have host");
}
HostList hostList = new HostList(1);
hostList.addHost(prop.getHost());
// get single property from host list
String[] restricted = new String[] { prop.getName() };
String[] excluded = null;
PropTreeCell tree = hostList.commonProperties(null, /* allowReadonly= */
false, restricted, excluded);
if (tree.numChildren() == 0) {
throw new InternalErrorException("Property " + prop.getName() + " not found in host");
}
// expand save data in hostList down one level ...
hostList.saveBackupValues(tree);
return new EditingProperty(tree.getFirstChild(), hostList, /* live= */
true);
}
use of maspack.properties.HostList in project artisynth_core by artisynth.
the class AddComponentAgent method setComponentType.
/**
* Called whenever the specific class type of the components being added by
* this agent is changed.
*/
public void setComponentType(Class type) {
if (type == myComponentType) {
return;
}
myComponentType = type;
if (myPrototype != null) {
setProperties(myPrototype, myPrototype);
}
myPrototype = getPrototypeComponent(type);
if (myPrototype != null) {
myHostList = new HostList(new HasProperties[] { myPrototype });
myPropTree = myHostList.commonProperties(null, false);
// remove properties which are to be excluded
String[] excludedPropNames = getExcludedPropNames(type);
for (int i = 0; i < excludedPropNames.length; i++) {
myPropTree.removeDescendant(excludedPropNames[i]);
}
myHostList.saveBackupValues(myPropTree);
myHostList.getCommonValues(myPropTree, /* live= */
true);
if (myPropertyPanelIdx != -1) {
myDefaultProps = EditingProperty.createProperties(myPropTree, myHostList, /* isLive= */
true);
LinkedList<Property> basicProps = getBasicProps(type, myDefaultProps);
if (basicProps.size() > 0) {
LinkedList<Property> extraProps = new LinkedList<Property>();
extraProps.addAll(myDefaultProps);
extraProps.removeAll(basicProps);
myPropertyPanel = new ExpandablePropertyPanel(basicProps, extraProps);
} else {
myPropertyPanel = new PropertyPanel(myDefaultProps);
}
if (myPropertyPanelBorderTitle != null) {
String title = myPropertyPanelBorderTitle;
if (title.indexOf("TYPE") != -1) {
title = title.replaceAll("TYPE", (String) myTypeSelector.getValue());
}
myPropertyPanel.setBorder(GuiUtils.createTitledPanelBorder(title));
}
resetDefaultProperties();
myPropertyPanel.updateWidgetValues(/* updateFromSource= */
false);
myPropertyPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
myContentPane.removeWidget(myPropertyPanelIdx);
myContentPane.addWidget(myPropertyPanel, myPropertyPanelIdx);
myContentPane.validate();
// myContentPane.resetLabelAlignment();
if (myDisplay.isVisible()) {
myDisplay.pack();
}
}
}
}
Aggregations