You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/12/08 15:56:02 UTC
[52/53] [partial] ISIS-188: making structure of component viewers
consistent
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/GridLayoutControlBorder.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/GridLayoutControlBorder.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/GridLayoutControlBorder.java
deleted file mode 100644
index 13615da..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/GridLayoutControlBorder.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.core.runtime.userprofile.Options;
-import org.apache.isis.viewer.dnd.drawing.Location;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.UserActionSet;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.Workspace;
-import org.apache.isis.viewer.dnd.view.base.AbstractBorder;
-import org.apache.isis.viewer.dnd.view.option.UserActionAbstract;
-
-public class GridLayoutControlBorder extends AbstractBorder {
-
- public static final class Factory implements CompositeViewDecorator {
- @Override
- public View decorate(final View view, final Axes axes) {
- return new GridLayoutControlBorder(view);
- }
- }
-
- protected GridLayoutControlBorder(final View view) {
- super(view);
- }
-
- @Override
- public void viewMenuOptions(final UserActionSet menuOptions) {
- super.viewMenuOptions(menuOptions);
-
- final GridLayout layout = getViewAxes().getAxis(GridLayout.class);
-
- final boolean columnOrientation = layout.getOrientation() == GridLayout.COLUMNS;
-
- final UserActionSet submenu = menuOptions.addNewActionSet("Grid");
-
- submenu.add(new UserActionAbstract("Add " + (columnOrientation ? "Column" : "Row")) {
- @Override
- public void execute(final Workspace workspace, final View view, final Location at) {
- layout.setSize(layout.getSize() + 1);
- invalidateLayout();
- }
- });
-
- if (layout.getSize() > 1) {
- submenu.add(new UserActionAbstract("Remove " + (columnOrientation ? "Column" : "Row")) {
- @Override
- public void execute(final Workspace workspace, final View view, final Location at) {
- layout.setSize(layout.getSize() - 1);
- invalidateLayout();
- }
- });
- }
-
- submenu.add(new UserActionAbstract(columnOrientation ? "In Rows" : "In Columns") {
- @Override
- public void execute(final Workspace workspace, final View view, final Location at) {
- layout.setOrientation(columnOrientation ? GridLayout.ROWS : GridLayout.COLUMNS);
- invalidateLayout();
- }
- });
- }
-
- @Override
- public void saveOptions(final Options viewOptions) {
- super.saveOptions(viewOptions);
-
- final GridLayout layout = getViewAxes().getAxis(GridLayout.class);
- viewOptions.addOption("orientation", layout.getOrientation() == GridLayout.COLUMNS ? "columns" : "rows");
- viewOptions.addOption("size", layout.getSize() + "");
- }
-
- @Override
- public void loadOptions(final Options viewOptions) {
- super.loadOptions(viewOptions);
-
- final GridLayout layout = getViewAxes().getAxis(GridLayout.class);
- layout.setOrientation(viewOptions.getString("orientation", "columns").equals("columns") ? GridLayout.COLUMNS : GridLayout.ROWS);
- layout.setSize(viewOptions.getInteger("size", 1));
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/IconGridViewSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/IconGridViewSpecification.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/IconGridViewSpecification.java
deleted file mode 100644
index 43bf01b..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/IconGridViewSpecification.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.viewer.dnd.drawing.ColorsAndFonts;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.Toolkit;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.ViewFactory;
-import org.apache.isis.viewer.dnd.view.base.Layout;
-import org.apache.isis.viewer.dnd.view.border.IconBorder;
-import org.apache.isis.viewer.dnd.view.border.LineBorder;
-
-public class IconGridViewSpecification extends AbstractCollectionViewSpecification {
-
- public IconGridViewSpecification() {
- addViewDecorator(new IconBorder.Factory());
- }
-
- @Override
- protected ViewFactory createElementFactory() {
- return new ViewFactory() {
- @Override
- public View createView(final Content content, final Axes axes, final int sequence) {
- final View icon = new ImageViewSpecification().createView(content, axes, sequence);
- /*
- * Icon icon = new Icon(content,
- * IconGridViewSpecification.this); Text textStyle =
- * Toolkit.getText(ColorsAndFonts.TEXT_NORMAL);
- * icon.setTitle(new ObjectTitleText(icon, textStyle));
- * icon.setSelectedGraphic(new IconGraphic(icon, 68));
- * icon.setUnselectedGraphic(new IconGraphic(icon, 60));
- * icon.setVertical(true);
- *
- * // return icon;
- */
- final LineBorder lineBorderedIcon = new LineBorder(icon);
- lineBorderedIcon.setPadding(4);
- lineBorderedIcon.setColor(Toolkit.getColor(ColorsAndFonts.COLOR_PRIMARY3));
-
- // return lineBorderedIcon;
-
- return new ReplaceViewBorder(lineBorderedIcon);
- }
- };
- }
-
- @Override
- public Layout createLayout(final Content content, final Axes axes) {
- final GridLayout gridLayout = new GridLayout();
- gridLayout.setSize(3);
- return gridLayout;
- }
-
- @Override
- public String getName() {
- return "Icon Grid";
- }
-
- /*
- * private static final ObjectSpecification BOOK_SPECIFICATION =
- * IsisContext.getSpecificationLoader().loadSpecification(
- * "org.apache.isis.example.library.dom.Book"); public boolean
- * canDisplay(ViewRequirement requirement) { return
- * super.canDisplay(requirement) &&
- * requirement.getAdapter().getTypeOfFacet().valueSpec() ==
- * BOOK_SPECIFICATION; }
- */
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ImageViewSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ImageViewSpecification.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ImageViewSpecification.java
deleted file mode 100644
index 7a5ed88..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ImageViewSpecification.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.viewer.dnd.drawing.ColorsAndFonts;
-import org.apache.isis.viewer.dnd.drawing.Text;
-import org.apache.isis.viewer.dnd.icon.Icon;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.Toolkit;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.ViewRequirement;
-import org.apache.isis.viewer.dnd.view.ViewSpecification;
-import org.apache.isis.viewer.dnd.view.base.IconGraphic;
-import org.apache.isis.viewer.dnd.view.text.ObjectTitleText;
-
-public class ImageViewSpecification implements ViewSpecification {
-
- @Override
- public View createView(final Content content, final Axes axes, final int sequence) {
- final Icon icon = new Icon(content, ImageViewSpecification.this);
- final Text textStyle = Toolkit.getText(ColorsAndFonts.TEXT_NORMAL);
- icon.setTitle(new ObjectTitleText(icon, textStyle));
- icon.setSelectedGraphic(new IconGraphic(icon, 68));
- icon.setUnselectedGraphic(new IconGraphic(icon, 60));
- icon.setVertical(true);
-
- return icon;
- }
-
- @Override
- public boolean canDisplay(final ViewRequirement requirement) {
- return requirement.isObject() && requirement.isClosed();
- }
-
- @Override
- public String getName() {
- return "Image";
- }
-
- @Override
- public boolean isAligned() {
- return false;
- }
-
- @Override
- public boolean isOpen() {
- return false;
- }
-
- @Override
- public boolean isReplaceable() {
- return false;
- }
-
- @Override
- public boolean isResizeable() {
- return false;
- }
-
- @Override
- public boolean isSubView() {
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/LineBorderDecorator.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/LineBorderDecorator.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/LineBorderDecorator.java
deleted file mode 100644
index ed46eaa..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/LineBorderDecorator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.SubviewDecorator;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.ViewAxis;
-import org.apache.isis.viewer.dnd.view.border.LineBorder;
-
-public class LineBorderDecorator implements SubviewDecorator {
-
- @Override
- public View decorate(final Axes axes, final View view) {
- return new LineBorder(view);
- }
-
- @Override
- public ViewAxis createAxis(final org.apache.isis.viewer.dnd.view.Content content) {
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/MasterDetailPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/MasterDetailPanel.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/MasterDetailPanel.java
deleted file mode 100644
index 0ace123..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/MasterDetailPanel.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.dnd.drawing.Location;
-import org.apache.isis.viewer.dnd.drawing.Size;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.ObjectContent;
-import org.apache.isis.viewer.dnd.view.Selectable;
-import org.apache.isis.viewer.dnd.view.Toolkit;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.ViewRequirement;
-import org.apache.isis.viewer.dnd.view.ViewSpecification;
-import org.apache.isis.viewer.dnd.view.base.BlankView;
-import org.apache.isis.viewer.dnd.view.border.ScrollBorder;
-import org.apache.isis.viewer.dnd.view.border.SelectableViewAxis;
-import org.apache.isis.viewer.dnd.view.border.ViewResizeBorder;
-import org.apache.isis.viewer.dnd.view.collection.CollectionContent;
-import org.apache.isis.viewer.dnd.view.content.NullContent;
-
-public class MasterDetailPanel extends CompositeView implements Selectable {
- private static final int MINIMUM_WIDTH = 120;
- private final ViewSpecification leftHandSideSpecification;
- private final Axes axes;
-
- public MasterDetailPanel(final Content content, final ViewSpecification specification, final ViewSpecification leftHandSideSpecification) {
- super(content, specification);
- this.leftHandSideSpecification = leftHandSideSpecification;
- axes = new Axes();
- axes.add(new SelectableViewAxis(this));
- }
-
- @Override
- protected void buildView() {
- final Content content = getContent();
- View leftHandView = leftHandSideSpecification.createView(content, axes, -1);
- leftHandView = new ViewResizeBorder(new ScrollBorder(leftHandView));
- leftHandView.setParent(getView());
- addView(leftHandView);
-
- final Size blankViewSize = new Size(MINIMUM_WIDTH, 0);
- final View blankView = new BlankView(new NullContent(), blankViewSize);
- blankView.setParent(getView());
- addView(blankView);
-
- selectFirstSuitableObject(content);
- }
-
- private void selectFirstSuitableObject(final Content content) {
- if (content instanceof CollectionContent) {
- final ObjectAdapter[] elements = ((CollectionContent) content).elements();
- if (elements.length > 0) {
- final ObjectAdapter firstElement = elements[0];
- final Content firstElementContent = Toolkit.getContentFactory().createRootContent(firstElement);
- setSelectedNode(firstElementContent);
- }
- } else if (content instanceof ObjectContent) {
- /*
- * TODO provide a view that shows first useful object (not
- * redisplaying parent)
- *
- * ObjectAssociation[] associations =
- * content.getSpecification().getAssociations(); for (int i = 0; i <
- * associations.length; i++) { ObjectAssociation assoc =
- * associations[i]; if (assoc.isOneToManyAssociation()) {
- * ObjectAdapter collection = assoc.get(content.getAdapter()); final
- * Content collectionContent =
- * Toolkit.getContentFactory().createRootContent(collection);
- * setSelectedNode(collectionContent); break; } else if
- * (assoc.isOneToOneAssociation() &&
- * !((OneToOneAssociation)assoc).getSpecification().isParseable()) {
- * ObjectAdapter object = assoc.get(content.getAdapter()); if
- * (object == null) { continue; } final Content objectContent =
- * Toolkit.getContentFactory().createRootContent(object);
- * setSelectedNode(objectContent); break; } }
- */
- setSelectedNode(content);
- }
- }
-
- @Override
- protected void doLayout(final Size availableSpace) {
- availableSpace.contract(getView().getPadding());
-
- final View[] subviews = getSubviews();
- final View left = subviews[0];
- final View right = subviews[1];
- final Size leftPanelRequiredSize = left.getRequiredSize(new Size(availableSpace));
- final Size rightPanelRequiredSize = right == null ? new Size() : right.getRequiredSize(new Size(availableSpace));
-
- // combine the two sizes
- final Size totalSize = new Size(leftPanelRequiredSize);
- totalSize.extendWidth(rightPanelRequiredSize.getWidth());
- totalSize.ensureHeight(rightPanelRequiredSize.getHeight());
-
- if (totalSize.getWidth() > availableSpace.getWidth()) {
- /*
- * If the combined width is greater than the available then we need
- * to divide the space between the two sides and recalculate
- */
- if (rightPanelRequiredSize.getWidth() <= MINIMUM_WIDTH) {
- leftPanelRequiredSize.setWidth(availableSpace.getWidth() - rightPanelRequiredSize.getWidth());
- } else {
- final int availableWidth = availableSpace.getWidth();
- final int requiredWidth = totalSize.getWidth();
- leftPanelRequiredSize.setWidth(leftPanelRequiredSize.getWidth() * availableWidth / requiredWidth);
- rightPanelRequiredSize.setWidth(rightPanelRequiredSize.getWidth() * availableWidth / requiredWidth);
- }
- /*
- * final int leftWidth = Math.max(MINIMUM_WIDTH,
- * leftPanelRequiredSize.getWidth()); final int rightWidth =
- * rightPanelRequiredSize.getWidth(); final int totalWidth =
- * leftWidth + rightWidth;
- *
- * final int bestWidth = (int) (1.0 * leftWidth / totalWidth *
- * availableWidth); final Size maximumSizeLeft = new Size(bestWidth,
- * maximumSize.getHeight()); leftPanelRequiredSize =
- * left.getRequiredSize(maximumSizeLeft);
- *
- * final Size maximumSizeRight = new Size(availableWidth -
- * leftPanelRequiredSize.getWidth(), maximumSize.getHeight());
- * rightPanelRequiredSize = right.getRequiredSize(maximumSizeRight);
- */
- }
-
- // combinedSize.setHeight(Math.min(combinedSize.getHeight(),
- // maximumSize.getHeight()));
- // totalSize.limitSize(availableSpace);
-
- left.setSize(new Size(leftPanelRequiredSize.getWidth(), totalSize.getHeight()));
- left.layout();
-
- if (right != null) {
- right.setLocation(new Location(left.getSize().getWidth(), 0));
-
- rightPanelRequiredSize.setHeight(totalSize.getHeight());
- right.setSize(rightPanelRequiredSize);
- right.layout();
- }
- }
-
- @Override
- public Size requiredSize(final Size availableSpace) {
- final View[] subviews = getSubviews();
- final View left = subviews[0];
- final View right = subviews.length > 1 ? subviews[1] : null;
-
- Size leftPanelRequiredSize = left.getRequiredSize(new Size(availableSpace));
- Size rightPanelRequiredSize = right == null ? new Size() : right.getRequiredSize(new Size(availableSpace));
-
- if (leftPanelRequiredSize.getWidth() + rightPanelRequiredSize.getWidth() > availableSpace.getWidth()) {
- /*
- * If the combined width is greater than the available then we need
- * to divide the space between the two sides and recalculate
- */
-
- final int availableWidth = availableSpace.getWidth();
- final int leftWidth = leftPanelRequiredSize.getWidth();
- final int rightWidth = Math.max(MINIMUM_WIDTH, rightPanelRequiredSize.getWidth());
- final int totalWidth = leftWidth + rightWidth;
-
- final int bestWidth = (int) (1.0 * leftWidth / totalWidth * availableWidth);
- final Size maximumSizeLeft = new Size(bestWidth, availableSpace.getHeight());
- leftPanelRequiredSize = left.getRequiredSize(maximumSizeLeft);
-
- final Size maximumSizeRight = new Size(availableWidth - leftPanelRequiredSize.getWidth(), availableSpace.getHeight());
- rightPanelRequiredSize = right == null ? new Size() : right.getRequiredSize(maximumSizeRight);
- }
-
- // combine the two required sizes
- final Size combinedSize = new Size(leftPanelRequiredSize);
- combinedSize.extendWidth(rightPanelRequiredSize.getWidth());
- combinedSize.ensureHeight(rightPanelRequiredSize.getHeight());
- return combinedSize;
- }
-
- protected void showInRightPane(final View view) {
- replaceView(getSubviews()[1], view);
- }
-
- @Override
- public void setSelectedNode(final View view) {
- final Content content = view.getContent();
- setSelectedNode(content);
- }
-
- private void setSelectedNode(final Content content) {
- final ViewRequirement requirement = new ViewRequirement(content, ViewRequirement.OPEN | ViewRequirement.SUBVIEW | ViewRequirement.FIXED);
- /*
- * final ObjectAdapter object = content.getAdapter(); final
- * ObjectSpecification specification = object.getSpecification(); final
- * CollectionFacet facet =
- * specification.getFacet(CollectionFacet.class); if (facet != null &&
- * facet.size(object) > 0) { if
- * (mainViewTableSpec.canDisplay(requirement)) {
- * showInRightPane(mainViewTableSpec.createView(content, axes, -1)); }
- * else if (mainViewListSpec.canDisplay(requirement)) {
- * showInRightPane(mainViewListSpec.createView(content, axes, -1)); }
- *
- * } else if (specification.isObject()) { if (object != null &&
- * mainViewFormSpec.canDisplay(requirement)) {
- * showInRightPane(mainViewFormSpec.createView(content, axes, -1)); } }
- */
- final View createView = Toolkit.getViewFactory().createView(requirement);
- showInRightPane(createView);
- }
-
- @Override
- public String toString() {
- return "MasterDetailPanel" + getId();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
deleted file mode 100644
index b14250b..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ObjectFieldBuilder.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.core.commons.ensure.Assert;
-import org.apache.isis.core.commons.exceptions.UnknownTypeException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.util.AdapterUtils;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
-import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.ObjectContent;
-import org.apache.isis.viewer.dnd.view.SubviewDecorator;
-import org.apache.isis.viewer.dnd.view.Toolkit;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.ViewFactory;
-import org.apache.isis.viewer.dnd.view.base.FieldErrorView;
-import org.apache.isis.viewer.dnd.view.content.FieldContent;
-
-public class ObjectFieldBuilder extends AbstractViewBuilder {
- private static final Logger LOG = Logger.getLogger(ObjectFieldBuilder.class);
-
- // REVIEW: confirm this rendering context
- private final Where where = Where.OBJECT_FORMS;
-
- private final ViewFactory subviewDesign;
-
- // TODO remove - transitional
- public ObjectFieldBuilder(final ViewFactory subviewDesign) {
- this.subviewDesign = subviewDesign;
- }
-
- public ObjectFieldBuilder(final ViewFactory subviewDesign, final SubviewDecorator subviewDecorator) {
- this.subviewDesign = subviewDesign;
- addSubviewDecorator(subviewDecorator);
- }
-
- @Override
- public void build(final View view, final Axes axes) {
- Assert.assertEquals("ensure the view is the complete decorated view", view.getView(), view);
-
- final Content content = view.getContent();
- final ObjectAdapter object = ((ObjectContent) content).getObject();
-
- LOG.debug("build view " + view + " for " + object);
-
- final ObjectSpecification spec = object.getSpecification();
- final Filter<ObjectAssociation> filter = ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), object, where);
- final List<ObjectAssociation> flds = spec.getAssociations(filter);
-
- if (view.getSubviews().length == 0) {
- initialBuild(view, axes, object, flds);
- } else {
- updateBuild(view, axes, object, flds);
- }
- }
-
- private void initialBuild(final View view, final Axes axes, final ObjectAdapter object, final List<ObjectAssociation> flds) {
- LOG.debug(" as new build");
- // addViewAxes(view);
- for (int f = 0; f < flds.size(); f++) {
- final ObjectAssociation field = flds.get(f);
- addField(view, axes, object, field, f);
- }
- }
-
- private void addField(final View view, final Axes axes, final ObjectAdapter object, final ObjectAssociation field, final int fieldNumber) {
- final View fieldView = createFieldView(view, axes, object, fieldNumber, field);
- if (fieldView != null) {
- view.addView(decorateSubview(axes, fieldView));
- }
- }
-
- private void updateBuild(final View view, final Axes axes, final ObjectAdapter object, final List<ObjectAssociation> flds) {
- LOG.debug(" as update build");
- /*
- * 1/ To remove fields: look through views and remove any that don't
- * exists in visible fields
- *
- * 2/ From remaining views, check for changes as already being done, and
- * replace if needed
- *
- * 3/ Finally look through fields to see if there is no existing
- * subview; and add one
- */
-
- View[] subviews = view.getSubviews();
-
- // remove views for fields that no longer exist
- outer: for (int i = 0; i < subviews.length; i++) {
- final FieldContent fieldContent = ((FieldContent) subviews[i].getContent());
-
- for (int j = 0; j < flds.size(); j++) {
- final ObjectAssociation field = flds.get(j);
- if (fieldContent.getField() == field) {
- continue outer;
- }
- }
- view.removeView(subviews[i]);
- }
-
- // update existing fields if needed
- subviews = view.getSubviews();
- for (int i = 0; i < subviews.length; i++) {
- final View subview = subviews[i];
- final ObjectAssociation field = ((FieldContent) subview.getContent()).getField();
- final ObjectAdapter value = field.get(object);
-
- if (field.isOneToManyAssociation()) {
- subview.update(value);
- } else if (field.isOneToOneAssociation()) {
- final ObjectAdapter existing = subview.getContent().getAdapter();
-
- // if the field is parseable then it may have been modified; we
- // need to replace what was
- // typed in with the actual title.
- if (!field.getSpecification().isParseable()) {
- final boolean changedValue = value != existing;
- final boolean isDestroyed = existing != null && existing.isDestroyed();
- if (changedValue || isDestroyed) {
- View fieldView;
- fieldView = createFieldView(view, axes, object, i, field);
- if (fieldView != null) {
- view.replaceView(subview, decorateSubview(axes, fieldView));
- } else {
- view.addView(new FieldErrorView("No field for " + value));
- }
- }
- } else {
- if (AdapterUtils.exists(value) && !AdapterUtils.wrappedEqual(value, existing)) {
- final View fieldView = createFieldView(view, axes, object, i, field);
- view.replaceView(subview, decorateSubview(axes, fieldView));
- } else {
- subview.refresh();
- }
- }
- } else {
- throw new UnknownTypeException(field.getName());
- }
- }
-
- // add new fields
- outer2: for (int j = 0; j < flds.size(); j++) {
- final ObjectAssociation field = flds.get(j);
- for (int i = 0; i < subviews.length; i++) {
- final FieldContent fieldContent = ((FieldContent) subviews[i].getContent());
- if (fieldContent.getField() == field) {
- continue outer2;
- }
- }
- addField(view, axes, object, field, j);
- }
- }
-
- private View createFieldView(final View view, final Axes axes, final ObjectAdapter object, final int fieldNumber, final ObjectAssociation field) {
- if (field == null) {
- throw new NullPointerException();
- }
-
- if (field.isOneToOneAssociation()) {
- IsisContext.getPersistenceSession().resolveField(object, field);
- }
-
- final Content content1 = Toolkit.getContentFactory().createFieldContent(field, object);
- final View fieldView = subviewDesign.createView(content1, axes, fieldNumber);
- return fieldView;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ReplaceViewBorder.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ReplaceViewBorder.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ReplaceViewBorder.java
deleted file mode 100644
index 7252e52..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ReplaceViewBorder.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.viewer.dnd.drawing.Bounds;
-import org.apache.isis.viewer.dnd.drawing.Canvas;
-import org.apache.isis.viewer.dnd.form.FormSpecification;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Click;
-import org.apache.isis.viewer.dnd.view.Toolkit;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.base.AbstractBorder;
-
-public class ReplaceViewBorder extends AbstractBorder {
-
- protected ReplaceViewBorder(final View view) {
- super(view);
- }
-
- @Override
- public void draw(final Canvas canvas) {
- super.draw(canvas);
-
- final Bounds b = getButtonBounds();
- canvas.drawRoundedRectangle(b.getX(), b.getY(), b.getWidth(), b.getHeight(), 6, 6, Toolkit.getColor(0xfff));
- }
-
- @Override
- public void firstClick(final Click click) {
- if (getButtonBounds().contains(click.getLocation())) {
- final View view = new FormSpecification().createView(getContent(), new Axes(), 0);
- getWorkspace().replaceView(getParent(), view);
- }
- }
-
- private Bounds getButtonBounds() {
- final int x = getSize().getWidth() - 28;
- return new Bounds(x, 8, 20, 16);
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StackLayout.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StackLayout.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StackLayout.java
deleted file mode 100644
index 3d224c3..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StackLayout.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.viewer.dnd.drawing.Location;
-import org.apache.isis.viewer.dnd.drawing.Size;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.base.Layout;
-
-/**
- * A stack layout stacks its components vertically, one on top of the other,
- * working down from the top. Each component is given the space it requests.
- * Components adopt the width of the widest component when that component's view
- * specification's <code>isAligned</code> method returns <code>true</code>, or
- * the layout's <code>fixedWidth</code> flag is set (via the two parameter
- * constructor).
- *
- */
-public class StackLayout implements Layout {
- private final boolean fixedWidth;
-
- public StackLayout() {
- this.fixedWidth = false;
- }
-
- public StackLayout(final boolean fixedWidth) {
- this.fixedWidth = fixedWidth;
- }
-
- @Override
- public Size getRequiredSize(final View view) {
- int height = 0;
- int width = 0;
- final View views[] = view.getSubviews();
-
- for (final View v : views) {
- final Size s = v.getRequiredSize(new Size(Integer.MAX_VALUE, Integer.MAX_VALUE));
- width = Math.max(width, s.getWidth());
- height += s.getHeight();
- }
-
- return new Size(width, height);
- }
-
- @Override
- public void layout(final View view, final Size maximumSize) {
- final int x = 0;
- int y = 0;
- final View subviews[] = view.getSubviews();
-
- int maxWidth = 0;
- for (final View v : subviews) {
- final Size s = v.getRequiredSize(new Size(maximumSize));
- maxWidth = Math.max(maxWidth, s.getWidth());
- }
-
- for (final View v : subviews) {
- final Size s = v.getRequiredSize(new Size(maximumSize));
- s.limitWidth(maximumSize.getWidth());
- if (fixedWidth || v.getSpecification().isAligned()) {
- s.ensureWidth(maxWidth);
- }
- v.setSize(s);
- v.setLocation(new Location(x, y));
- y += s.getHeight();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StandardFields.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StandardFields.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StandardFields.java
deleted file mode 100644
index 9caba31..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/StandardFields.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.core.commons.exceptions.UnknownTypeException;
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.GlobalViewFactory;
-import org.apache.isis.viewer.dnd.view.Toolkit;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.ViewFactory;
-import org.apache.isis.viewer.dnd.view.ViewRequirement;
-
-/**
- * A view factory for the components of a container
- */
-public class StandardFields implements ViewFactory {
-
- @Override
- public View createView(final Content content, final Axes axes, final int sequence) {
- final GlobalViewFactory factory = Toolkit.getViewFactory();
-
- int requirement = 0;
- if (content.isObject()) {
- requirement = objectRequirement();
- } else if (content.isTextParseable()) {
- requirement = textParseableRequirement();
- } else if (content.isCollection()) {
- requirement = collectionRequirement();
- } else {
- throw new UnknownTypeException(content);
- }
-
- if (requirement != 0 && include(content, sequence)) {
- final ViewRequirement viewRequirement = new ViewRequirement(content, requirement);
- return factory.createView(viewRequirement);
- } else {
- return null;
- }
- }
-
- protected boolean include(final Content content, final int sequence) {
- return true;
- }
-
- protected int objectRequirement() {
- return ViewRequirement.CLOSED | ViewRequirement.SUBVIEW;
- }
-
- protected int textParseableRequirement() {
- return ViewRequirement.CLOSED | ViewRequirement.SUBVIEW;
- }
-
- protected int collectionRequirement() {
- return ViewRequirement.CLOSED | ViewRequirement.SUBVIEW;
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ViewBuilder.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ViewBuilder.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ViewBuilder.java
deleted file mode 100644
index 4d6fef5..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/composite/ViewBuilder.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.composite;
-
-import org.apache.isis.viewer.dnd.view.Axes;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.SubviewDecorator;
-import org.apache.isis.viewer.dnd.view.UserActionSet;
-import org.apache.isis.viewer.dnd.view.View;
-
-public interface ViewBuilder {
-
- void addSubviewDecorator(SubviewDecorator decorator);
-
- void createAxes(Axes axes, Content content);
-
- void build(View view, Axes axes);
-
- /**
- * Indicates whether this view is expanded, or iconized.
- *
- * @return true if it is showing the object's details; false if it is
- * showing the object only.
- */
- boolean isOpen();
-
- /**
- * Indicates whether this view can be replaced with another view (for the
- * same value or reference).
- *
- * @return true if it can be replaced by another view; false if it can't be
- * replaces
- */
- boolean isReplaceable();
-
- boolean isSubView();
-
- boolean canDragView();
-
- void viewMenuOptions(UserActionSet options, View view);
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractContent.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractContent.java
deleted file mode 100644
index ac2ca9f..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractContent.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.UserActionSet;
-
-public abstract class AbstractContent implements Content {
- @Override
- public void contentMenuOptions(final UserActionSet options) {
- }
-
- @Override
- public boolean isCollection() {
- return false;
- }
-
- @Override
- public boolean isObject() {
- return false;
- }
-
- @Override
- public boolean isPersistable() {
- return false;
- }
-
- @Override
- public boolean isTextParseable() {
- return false;
- }
-
- @Override
- public void viewMenuOptions(final UserActionSet options) {
- }
-
- @Override
- public String windowTitle() {
- return "";
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
deleted file mode 100644
index dba30b2..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractObjectContent.java
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.query.QueryFindAllInstances;
-import org.apache.isis.core.commons.ensure.Assert;
-import org.apache.isis.core.commons.exceptions.UnexpectedCallException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ResolveState;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.ConsentAbstract;
-import org.apache.isis.core.metamodel.consent.Veto;
-import org.apache.isis.core.metamodel.services.container.query.QueryCardinality;
-import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.Persistability;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationFilters;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-import org.apache.isis.runtimes.dflt.runtime.system.persistence.Persistor;
-import org.apache.isis.viewer.dnd.drawing.Image;
-import org.apache.isis.viewer.dnd.drawing.ImageFactory;
-import org.apache.isis.viewer.dnd.drawing.Location;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.ObjectContent;
-import org.apache.isis.viewer.dnd.view.Placement;
-import org.apache.isis.viewer.dnd.view.UserActionSet;
-import org.apache.isis.viewer.dnd.view.View;
-import org.apache.isis.viewer.dnd.view.Workspace;
-import org.apache.isis.viewer.dnd.view.option.UserActionAbstract;
-
-public abstract class AbstractObjectContent extends AbstractContent implements ObjectContent {
-
- public static final class ExplorationInstances extends UserActionAbstract {
-
- public ExplorationInstances() {
- super("Instances", ActionType.EXPLORATION);
- }
-
- @Override
- public Consent disabled(final View view) {
- final ObjectAdapter object = view.getContent().getAdapter();
- return ConsentAbstract.allowIf(object != null);
- }
-
- @Override
- public void execute(final Workspace workspace, final View view, final Location at) {
- final ObjectAdapter object = view.getContent().getAdapter();
- final ObjectSpecification spec = object.getSpecification();
- final ObjectAdapter instances = IsisContext.getPersistenceSession().findInstances(new QueryFindAllInstances(spec.getFullIdentifier()), QueryCardinality.MULTIPLE);
- workspace.objectActionResult(instances, new Placement(view));
- }
- }
-
- public static final class ExplorationClone extends UserActionAbstract {
-
- public ExplorationClone() {
- super("Clone", ActionType.EXPLORATION);
- }
-
- @Override
- public Consent disabled(final View view) {
- final ObjectAdapter object = view.getContent().getAdapter();
- return ConsentAbstract.allowIf(object != null);
- }
-
- @Override
- public void execute(final Workspace workspace, final View view, final Location at) {
- final ObjectAdapter original = view.getContent().getAdapter();
- // ObjectAdapter original = getObject();
- final ObjectSpecification spec = original.getSpecification();
-
- final ObjectAdapter clone = getPersistenceSession().createTransientInstance(spec);
- final List<ObjectAssociation> fields = spec.getAssociations();
- for (int i = 0; i < fields.size(); i++) {
- final ObjectAdapter fld = fields.get(i).get(original);
-
- if (fields.get(i).isOneToOneAssociation()) {
- ((OneToOneAssociation) fields.get(i)).setAssociation(clone, fld);
- } else if (fields.get(i).isOneToManyAssociation()) {
- // clone.setValue((OneToOneAssociation) fields[i],
- // fld.getObject());
- }
- }
-
- workspace.objectActionResult(clone, new Placement(view));
- }
- }
-
- public static final class DebugClearResolvedOption extends UserActionAbstract {
-
- private DebugClearResolvedOption() {
- super("Clear resolved", ActionType.DEBUG);
- }
-
- @Override
- public Consent disabled(final View view) {
- final ObjectAdapter object = view.getContent().getAdapter();
- return ConsentAbstract.allowIf(object == null || !object.isTransient() || object.isGhost());
- }
-
- @Override
- public void execute(final Workspace workspace, final View view, final Location at) {
- final ObjectAdapter object = view.getContent().getAdapter();
- object.changeState(ResolveState.GHOST);
- }
- }
-
- // REVIEW: should provide this rendering context, rather than hardcoding.
- // the net effect currently is that class members annotated with
- // @Hidden(where=Where.ANYWHERE) or @Disabled(where=Where.ANYWHERE) will indeed
- // be hidden/disabled, but will be visible/enabled (perhaps incorrectly)
- // for any other value for Where
- protected final Where where = Where.ANYWHERE;
-
- @Override
- public abstract Consent canClear();
-
- @Override
- public Consent canDrop(final Content sourceContent) {
- final ObjectAdapter target = getObject();
- if (!(sourceContent instanceof ObjectContent) || target == null) {
- // TODO: move logic into Facet
- return new Veto(String.format("Can't drop %s onto empty target", sourceContent.getAdapter().titleString()));
- } else {
- final ObjectAdapter source = ((ObjectContent) sourceContent).getObject();
- return canDropOntoObject(target, source);
- }
- }
-
- private Consent canDropOntoObject(final ObjectAdapter target, final ObjectAdapter source) {
- final ObjectAction action = dropAction(source, target);
- if (action != null) {
- final Consent parameterSetValid = action.isProposedArgumentSetValid(target, new ObjectAdapter[] { source });
- parameterSetValid.setDescription("Execute '" + action.getName() + "' with " + source.titleString());
- return parameterSetValid;
- } else {
- return setFieldOfMatchingType(target, source);
- }
- }
-
- private Consent setFieldOfMatchingType(final ObjectAdapter targetAdapter, final ObjectAdapter sourceAdapter) {
- if (targetAdapter.isTransient() && sourceAdapter.representsPersistent()) {
- // TODO: use Facet for this test instead.
- return new Veto("Can't set field in persistent object with reference to non-persistent object");
- }
- final List<ObjectAssociation> fields = targetAdapter.getSpecification().getAssociations(ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), targetAdapter, where));
- for (final ObjectAssociation fld : fields) {
- if (!fld.isOneToOneAssociation()) {
- continue;
- }
- if (!sourceAdapter.getSpecification().isOfType(fld.getSpecification())) {
- continue;
- }
- if (fld.get(targetAdapter) != null) {
- continue;
- }
- final Consent associationValid = ((OneToOneAssociation) fld).isAssociationValid(targetAdapter, sourceAdapter);
- if (associationValid.isAllowed()) {
- return associationValid.setDescription("Set field " + fld.getName());
- }
-
- }
- // TODO: use Facet for this test instead
- return new Veto(String.format("No empty field accepting object of type %s in %s", sourceAdapter.getSpecification().getSingularName(), title()));
- }
-
- @Override
- public abstract Consent canSet(final ObjectAdapter dragSource);
-
- @Override
- public abstract void clear();
-
- @Override
- public ObjectAdapter drop(final Content sourceContent) {
- if (!(sourceContent instanceof ObjectContent)) {
- return null;
- }
-
- final ObjectAdapter source = sourceContent.getAdapter();
- Assert.assertNotNull(source);
-
- final ObjectAdapter target = getObject();
- Assert.assertNotNull(target);
-
- if (!canDrop(sourceContent).isAllowed()) {
- return null;
- }
-
- final ObjectAction action = dropAction(source, target);
- if ((action != null) && action.isProposedArgumentSetValid(target, new ObjectAdapter[] { source }).isAllowed()) {
- return action.execute(target, new ObjectAdapter[] { source });
- }
-
- final List<ObjectAssociation> associations = target.getSpecification().getAssociations(ObjectAssociationFilters.dynamicallyVisible(IsisContext.getAuthenticationSession(), target, where));
-
- for (int i = 0; i < associations.size(); i++) {
- final ObjectAssociation association = associations.get(i);
- if (association.isOneToOneAssociation() && source.getSpecification().isOfType(association.getSpecification())) {
- final OneToOneAssociation otoa = (OneToOneAssociation) association;
- if (association.get(target) == null && otoa.isAssociationValid(target, source).isAllowed()) {
- otoa.setAssociation(target, source);
- break;
- }
- }
- }
-
- return null;
- }
-
- private ObjectAction dropAction(final ObjectAdapter source, final ObjectAdapter target) {
- final ObjectAction action = target.getSpecification().getObjectAction(ActionType.USER, null, Arrays.asList(source.getSpecification()));
- return action;
- }
-
- @Override
- public abstract ObjectAdapter getObject();
-
- @Override
- public boolean isPersistable() {
- return getObject().getSpecification().persistability() == Persistability.USER_PERSISTABLE;
- }
-
- @Override
- public void contentMenuOptions(final UserActionSet options) {
- final ObjectAdapter object = getObject();
- options.addObjectMenuOptions(object);
-
- if (getObject() == null) {
- options.addCreateOptions(getSpecification());
- } else {
- options.add(new ExplorationInstances());
- }
-
- options.add(new ExplorationClone());
- options.add(new DebugClearResolvedOption());
- }
-
- public void parseTextEntry(final String entryText) {
- throw new UnexpectedCallException();
- }
-
- @Override
- public abstract void setObject(final ObjectAdapter object);
-
- @Override
- public String getIconName() {
- final ObjectAdapter object = getObject();
- return object == null ? null : object.getIconName();
- }
-
- @Override
- public Image getIconPicture(final int iconHeight) {
- final ObjectAdapter adapter = getObject();
- if (adapter == null) {
- return ImageFactory.getInstance().loadIcon("empty-field", iconHeight, null);
- }
- final ObjectSpecification specification = adapter.getSpecification();
- final Image icon = ImageFactory.getInstance().loadIcon(specification, iconHeight, null);
- return icon;
- }
-
- // ////////////////////////////////////////////////////////////
- // Dependencies (from context)
- // ////////////////////////////////////////////////////////////
-
- private static Persistor getPersistenceSession() {
- return IsisContext.getPersistenceSession();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractTextParsableContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractTextParsableContent.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractTextParsableContent.java
deleted file mode 100644
index 6b60e51..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/AbstractTextParsableContent.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.ParseableEntryActionParameter;
-import org.apache.isis.viewer.dnd.drawing.Image;
-
-public abstract class AbstractTextParsableContent extends AbstractContent {
-
- public abstract void clear();
-
- public abstract void entryComplete();
-
- @Override
- public Image getIconPicture(final int iconHeight) {
- return null;
- }
-
- public abstract boolean isEmpty();
-
- @Override
- public boolean isPersistable() {
- return false;
- }
-
- @Override
- public boolean isTransient() {
- return false;
- }
-
- public abstract void parseTextEntry(final String entryText);
-
- public abstract Consent isEditable();
-
- @Override
- public boolean isTextParseable() {
- return true;
- }
-
- /**
- * @param propertyOrParamValue
- * the target property or parameter
- * @param propertyOrParam
- * the {@link ObjectAssociation} or
- * {@link ParseableEntryActionParameter}
- * @param propertyOrParamTypeSpecification
- * the specification of the type of the property or parameter
- * (for fallback).
- */
- protected String titleString(final ObjectAdapter propertyOrParamValue, final FacetHolder propertyOrParam, final FacetHolder propertyOrParamTypeSpecification) {
-
- final TitleFacet titleFacet = propertyOrParam.getFacet(TitleFacet.class);
- if (titleFacet != null) {
- return titleFacet.title(propertyOrParamValue, null);
- } else {
- return propertyOrParamValue.titleString();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/FieldContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/FieldContent.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/FieldContent.java
deleted file mode 100644
index 06b4dce..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/FieldContent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.viewer.dnd.view.Content;
-
-public interface FieldContent extends Content {
-
- String getFieldName();
-
- ObjectAssociation getField();
-
- boolean isMandatory();
-
- Consent isEditable();
-
- ObjectAdapter getParent();
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/NullContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/NullContent.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/NullContent.java
deleted file mode 100644
index 24d6fa1..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/NullContent.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.dnd.drawing.Image;
-import org.apache.isis.viewer.dnd.view.Content;
-import org.apache.isis.viewer.dnd.view.UserActionSet;
-
-public class NullContent implements Content {
-
- private final String title;
-
- public NullContent() {
- this("");
- }
-
- public NullContent(final String title) {
- this.title = title;
- }
-
- @Override
- public Consent canDrop(final Content sourceContent) {
- return null;
- }
-
- @Override
- public void contentMenuOptions(final UserActionSet options) {
- }
-
- @Override
- public void debugDetails(final DebugBuilder debug) {
- }
-
- @Override
- public ObjectAdapter drop(final Content sourceContent) {
- return null;
- }
-
- @Override
- public String getDescription() {
- return null;
- }
-
- @Override
- public String getHelp() {
- return null;
- }
-
- @Override
- public String getIconName() {
- return null;
- }
-
- @Override
- public Image getIconPicture(final int iconHeight) {
- return null;
- }
-
- @Override
- public String getId() {
- return null;
- }
-
- @Override
- public ObjectAdapter getAdapter() {
- return null;
- }
-
- @Override
- public ObjectAdapter[] getOptions() {
- return null;
- }
-
- @Override
- public ObjectSpecification getSpecification() {
- return null;
- }
-
- @Override
- public boolean isCollection() {
- return false;
- }
-
- @Override
- public boolean isObject() {
- return false;
- }
-
- @Override
- public boolean isOptionEnabled() {
- return false;
- }
-
- @Override
- public boolean isPersistable() {
- return false;
- }
-
- @Override
- public boolean isTransient() {
- return false;
- }
-
- @Override
- public boolean isTextParseable() {
- return false;
- }
-
- public void parseTextEntry(final String entryText) {
- }
-
- @Override
- public String title() {
- return title;
- }
-
- @Override
- public void viewMenuOptions(final UserActionSet options) {
- }
-
- @Override
- public String windowTitle() {
- return title;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/RootObject.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/RootObject.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/RootObject.java
deleted file mode 100644
index 0832c5b..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/RootObject.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import org.apache.isis.core.commons.debug.DebugBuilder;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.Veto;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.dnd.view.Content;
-
-public class RootObject extends AbstractObjectContent {
- private final ObjectAdapter adapter;
-
- public RootObject(final ObjectAdapter adapter) {
- this.adapter = adapter;
- }
-
- @Override
- public Consent canClear() {
- return Veto.DEFAULT;
- }
-
- @Override
- public Consent canDrop(final Content sourceContent) {
- return super.canDrop(sourceContent);
- }
-
- @Override
- public Consent canSet(final ObjectAdapter dragSource) {
- return Veto.DEFAULT;
- }
-
- @Override
- public void clear() {
- throw new IsisException("Invalid call");
- }
-
- @Override
- public void debugDetails(final DebugBuilder debug) {
- debug.appendln("object", adapter);
- }
-
- @Override
- public ObjectAdapter getAdapter() {
- return adapter;
- }
-
- @Override
- public String getDescription() {
- return getSpecification().getSingularName() + ": " + getObject().titleString() + " " + getSpecification().getDescription();
- }
-
- @Override
- public String getHelp() {
- return "";
- }
-
- @Override
- public String getId() {
- return "";
- }
-
- @Override
- public ObjectAdapter getObject() {
- return adapter;
- }
-
- @Override
- public ObjectAdapter[] getOptions() {
- return null;
- }
-
- @Override
- public ObjectSpecification getSpecification() {
- return adapter.getSpecification();
- }
-
- @Override
- public boolean isObject() {
- return true;
- }
-
- @Override
- public boolean isOptionEnabled() {
- return false;
- }
-
- @Override
- public boolean isTransient() {
- return adapter != null && adapter.isTransient();
- }
-
- @Override
- public void setObject(final ObjectAdapter object) {
- throw new IsisException("Invalid call");
- }
-
- @Override
- public String title() {
- return adapter.titleString();
- }
-
- @Override
- public String toString() {
- return "Root Object [adapter=" + adapter + "]";
- }
-
- @Override
- public String windowTitle() {
- return (isTransient() ? "UNSAVED " : "") + getSpecification().getSingularName();
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/TextParseableContent.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/TextParseableContent.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/TextParseableContent.java
deleted file mode 100644
index ab6d3fc..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/content/TextParseableContent.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.content;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.viewer.dnd.view.Content;
-
-public interface TextParseableContent extends Content {
-
- void clear();
-
- Consent canClear();
-
- boolean canWrap();
-
- void entryComplete();
-
- int getMaximumLength();
-
- int getNoLines();
-
- int getTypicalLineLength();
-
- Consent isEditable();
-
- boolean isEmpty();
-
- void parseTextEntry(String entryText);
-
- String titleString(ObjectAdapter value);
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/eb613703/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/control/AbstractButtonAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/control/AbstractButtonAction.java b/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/control/AbstractButtonAction.java
deleted file mode 100644
index a2316d6..0000000
--- a/component/viewer/dnd/src/main/java/org/apache/isis/viewer/dnd/view/control/AbstractButtonAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.isis.viewer.dnd.view.control;
-
-import org.apache.isis.core.metamodel.consent.Allow;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.viewer.dnd.view.ButtonAction;
-import org.apache.isis.viewer.dnd.view.View;
-
-public abstract class AbstractButtonAction implements ButtonAction {
- private final String name;
- private final boolean defaultButton;
-
- public AbstractButtonAction(final String name) {
- this(name, false);
- }
-
- public AbstractButtonAction(final String name, final boolean defaultButton) {
- this.name = name;
- this.defaultButton = defaultButton;
- }
-
- @Override
- public Consent disabled(final View view) {
- return Allow.DEFAULT;
- }
-
- @Override
- public String getDescription(final View view) {
- return "";
- }
-
- @Override
- public String getHelp(final View view) {
- return "No help available for button";
- }
-
- @Override
- public String getName(final View view) {
- return name;
- }
-
- @Override
- public ActionType getType() {
- return ActionType.USER;
- }
-
- @Override
- public boolean isDefault() {
- return defaultButton;
- }
-}