/* * (non-Javadoc) * @see org.eclipse.sapphire.ui.SapphireActionHandler#run(org.eclipse.sapphire.ui.SapphireRenderingContext) */ @Override protected Object run(SapphireRenderingContext context) { final IModelElement rootModel = context.getPart().getModelElement(); final ModelProperty modelProperty = rootModel.getModelElementType().getProperty(this.strModelProperty); Object obj = rootModel.read(modelProperty); IModelElement mElement = null; if (obj instanceof ModelElementList<?>) { // System.out.println( "QuickActionsHandlerFactory.Handler.run()" + obj.getClass() ); ModelElementList<?> list = (ModelElementList<?>) obj; mElement = list.addNewElement(); } else { throw new UnsupportedOperationException( Resources.bind(Resources.unsuportedOperation, this.strModelProperty)); } // Select the ndoe final MasterDetailsEditorPagePart page = getPart().nearest(MasterDetailsEditorPagePart.class); final MasterDetailsContentNode root = page.getContentOutline().getRoot(); final MasterDetailsContentNode node = root.findNodeByModelElement(mElement); if (node != null) { node.select(); } return mElement; }
@Override public boolean applicable(final ServiceContext context, final Class<? extends Service> service) { final ValueProperty property = context.find(ValueProperty.class); final IModelElement element = context.find(IModelElement.class); return (property != null && property.hasAnnotation(NoDuplicates.class) && element.parent() instanceof ModelElementList); }
/* * (non-Javadoc) * @see org.eclipse.sapphire.services.RelativePathService#roots() */ @Override public List<Path> roots() { List<Path> roots = new ArrayList<Path>(); IModelElement modelElement = context(IHook.class); IProject project = modelElement.adapt(IProject.class); IFolder[] folders = ProjectUtil.getSourceFolders(project); for (IFolder folder : folders) { roots.add(new Path(folder.getLocation().toPortableString())); } return roots; }
@Override public void init(SapphireAction action, ISapphireActionHandlerDef def) { super.init(action, def); final IModelElement rootModel = action.getPart().getModelElement(); final ModelProperty modelProperty = rootModel.getModelElementType().getProperty(this.strModelProperty); String labelText = modelProperty.getLabel(false, CapitalizationType.FIRST_WORD_ONLY, true); String actionLabel = getActionLabel(labelText); setLabel(actionLabel); ModelElementType propModelElementType = modelProperty.getType(); addImage(propModelElementType.image()); }
private ShapeFactoryCaseDef getShapeFactoryCase(IModelElement listEntryModelElement) { for (ShapeFactoryCaseDef shapeFactoryCase : this.shapeFactoryDef.getCases()) { JavaType javaType = shapeFactoryCase.getType().resolve(); Class<?> cl = javaType.artifact(); if (cl.isAssignableFrom(listEntryModelElement.getClass())) { return shapeFactoryCase; } } return null; }
private void handleModelPropertyChange(final PropertyEvent event) { final IModelElement element = event.element(); final ModelProperty property = event.property(); ModelElementList<IModelElement> newList = (ModelElementList<IModelElement>) element.read(property); List<ShapePart> children = getChildren(); List<IModelElement> oldList = new ArrayList<IModelElement>(children.size()); for (ShapePart shapePart : children) { oldList.add(shapePart.getLocalModelElement()); } List<IModelElement> deletedShapes = ListUtil.ListDiff(oldList, newList); List<IModelElement> newShapes = ListUtil.ListDiff(newList, oldList); if (deletedShapes.isEmpty() && newShapes.isEmpty() && ListUtil.ListDiffers(oldList, newList)) { // List has been re-ordered List<ShapePart> newChildren = new ArrayList<ShapePart>(); for (IModelElement listEle : newList) { ShapePart shapePart = getShapePart(listEle); newChildren.add(shapePart); } this.children.clear(); this.children.addAll(newChildren); broadcast(new ShapeReorderEvent(this)); } else { for (IModelElement deletedShape : deletedShapes) { ShapePart shapePart = getShapePart(deletedShape); if (shapePart != null) { shapePart.dispose(); this.children.remove(shapePart); broadcast(new ShapeDeleteEvent(shapePart)); } } for (IModelElement newShape : newShapes) { ShapeFactoryCaseDef shapeFactoryCase = getShapeFactoryCase(newShape); ShapePart shapePart = createShapePart(shapeFactoryCase, newShape); this.children.add(shapePart); broadcast(new ShapeAddEvent(shapePart)); } } }
@Override protected void initEnablementService() { final IModelElement element = context(IModelElement.class); IModelParticle parent = element.parent(); if (!(parent instanceof IModelElement)) { parent = parent.parent(); } this.parentElement = (IModelElement) parent; this.parentProperty = element.getParentProperty(); this.listener = new FilteredListener<PropertyEnablementEvent>() { @Override protected void handleTypedEvent(final PropertyEnablementEvent event) { refresh(); } }; this.parentElement.attach(this.listener, this.parentProperty); }