From 25464880f209b52359f86d2a6f5e9a5a0ec1b8e2 Mon Sep 17 00:00:00 2001 From: lempinen Date: Thu, 1 Dec 2011 13:52:45 +0000 Subject: [PATCH] DnD support to AxisAndVariablesExplorer git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@23386 ac1ea38d-2e2b-0410-8846-a27921b304fc --- org.simantics.sysdyn.ontology/graph.tg | Bin 78460 -> 78730 bytes .../ChartAxisAndVariablesViewpoint.pgraph | 9 +- .../org/simantics/sysdyn/SysdynResource.java | 9 +- org.simantics.sysdyn.ui/adapters.xml | 2 +- .../newComponents/NewChartHandler.java | 4 +- .../chart/graphexplorer/AxisDropAction.java | 104 ++++++++++++++++++ ...{DropAction.java => SeriesDropAction.java} | 53 ++++++--- 7 files changed, 157 insertions(+), 24 deletions(-) create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/AxisDropAction.java rename org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/{DropAction.java => SeriesDropAction.java} (70%) diff --git a/org.simantics.sysdyn.ontology/graph.tg b/org.simantics.sysdyn.ontology/graph.tg index 4dbbefac4e9ca21a63b1c48226f5e55f2aaa1729..acca8d8fa04c639e2af53d7facf25013f3d63094 100644 GIT binary patch literal 78730 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 literal 78460 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�+*raZUj~ zq!g@CWTh1R{@Q6)W|tqKh=c`vX40oO0<{6z zy$-x*n%=N%VwPV3cooWT4L&1w^t7Q8UG~tym*X~F%N+DXTC?-J2hpW;?pX}#SQ+1#fn&*IvWQi2 zxCY0M>YRXdsV4{cryK5Ri5 - none 0 fill 1 + none 0 fill 1 \ No newline at end of file diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/newComponents/NewChartHandler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/newComponents/NewChartHandler.java index 3bf1b9a7..85d44c57 100644 --- a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/newComponents/NewChartHandler.java +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/newComponents/NewChartHandler.java @@ -78,10 +78,10 @@ public class NewChartHandler extends AbstractHandler { Resource domainAxis = GraphUtils.create2(g, jfree.NumberAxis, l0.HasName, "NumberAxis" + UUID.randomUUID().toString(), - l0.HasLabel, "domain"); + l0.HasLabel, "Domain"); Resource rangeAxis = GraphUtils.create2(g, jfree.NumberAxis, l0.HasName, "NumberAxis" + UUID.randomUUID().toString(), - l0.HasLabel, "range"); + l0.HasLabel, "Range"); Resource dataset = GraphUtils.create2(g, jfree.XYDataset, l0.HasName, "XYDataset" + UUID.randomUUID().toString(), diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/AxisDropAction.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/AxisDropAction.java new file mode 100644 index 00000000..7d3872cc --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/AxisDropAction.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright (c) 2007, 2011 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.trend.chart.graphexplorer; + +import java.util.List; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.common.utils.ListUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.DropActionFactory; +import org.simantics.layer0.Layer0; +import org.simantics.sysdyn.JFreeChartResource; +import org.simantics.sysdyn.ui.trend.chart.properties.AxisAndVariablesExplorerComposite; +import org.simantics.ui.SimanticsUI; +import org.simantics.ui.utils.AdaptionUtils; + +/** + * Action for dropping axis on top of other axis or series in {@link AxisAndVariablesExplorerComposite} + * @author Teemu Lempinen + * + */ +public class AxisDropAction implements DropActionFactory { + + @Override + public Runnable create(ReadGraph g, Object target, Object source) throws DatabaseException { + // Make sure that both target and source are resources + Resource t = AdaptionUtils.adaptToSingle(target, Resource.class); + Resource s = AdaptionUtils.adaptToSingle(source, Resource.class); + + if(t == null || s == null) + return null; + + // Make sure that source and target are of correct type + JFreeChartResource jfree = JFreeChartResource.getInstance(g); + if(!g.isInstanceOf(s, jfree.Axis)) + return null; + if(!g.isInstanceOf(t, jfree.Series) && !g.isInstanceOf(t, jfree.Axis)) + return null; + + return getRunnable(t, s); + } + + /** + * Get the runnable for doing the drop action + * + * @param t target resource + * @param s source resource + * @return Runnable + */ + private Runnable getRunnable(final Resource t, final Resource s) { + Runnable runnable = new Runnable() { + + @Override + public void run() { + SimanticsUI.getSession().asyncRequest(new WriteRequest() { + + @Override + public void perform(WriteGraph graph) throws DatabaseException { + if(t == null || s == null) return; + JFreeChartResource jfree = JFreeChartResource.getInstance(graph); + Layer0 l0 = Layer0.getInstance(graph); + Resource target = t; + Resource source = s; + + // Dragged axis always exists in the same list with target axis, so it is safe to get the target index + Resource plot = graph.getPossibleObject(source, l0.PartOf); + Resource axisListResource = graph.getPossibleObject(plot, jfree.Plot_rangeAxisList); + List axisList = ListUtils.toList(graph, axisListResource); + if(graph.isInstanceOf(target, jfree.Series)) { + // Dropped a axis over a series -> get the axis of the series + Resource dataset = graph.getPossibleObject(target, l0.PartOf); + target = graph.getPossibleObject(dataset, jfree.Dataset_mapToRangeAxis); + } + + // move axis to target position + int targetIndex = axisList.indexOf(target); + axisList.remove(source); + axisList.add(targetIndex, source); + + // Update the range axis list + graph.deny(plot, jfree.Plot_rangeAxisList); + axisListResource = ListUtils.create(graph, axisList); + graph.claim(plot, jfree.Plot_rangeAxisList, axisListResource); + } + + }); + } + }; + return runnable; + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/DropAction.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/SeriesDropAction.java similarity index 70% rename from org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/DropAction.java rename to org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/SeriesDropAction.java index 7cb33bf4..e0bd0d63 100644 --- a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/DropAction.java +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/trend/chart/graphexplorer/SeriesDropAction.java @@ -12,6 +12,7 @@ package org.simantics.sysdyn.ui.trend.chart.graphexplorer; import java.util.Collections; +import java.util.List; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; @@ -29,21 +30,30 @@ import org.simantics.ui.utils.AdaptionUtils; /** * Drop action for explorer in {@link ChartAxisAndVariablesTab}. This action is used for dropping - * both series and axis on top of each others. + * both series on axis or another sries * * @author Teemu Lempinen * */ -public class DropAction implements DropActionFactory { +public class SeriesDropAction implements DropActionFactory { @Override public Runnable create(ReadGraph g, Object target, Object source) throws DatabaseException { // Make sure that both target and source are resources Resource t = AdaptionUtils.adaptToSingle(target, Resource.class); Resource s = AdaptionUtils.adaptToSingle(source, Resource.class); - if(t != null && s != null) - return getRunnable(t, s); - return null; + + if(t == null || s == null) + return null; + + // Make sure that source and target are of correct type + JFreeChartResource jfree = JFreeChartResource.getInstance(g); + if(!g.isInstanceOf(s, jfree.Series)) + return null; + if(!g.isInstanceOf(t, jfree.Series) && !g.isInstanceOf(t, jfree.Axis)) + return null; + + return getRunnable(t, s); } /** @@ -67,26 +77,28 @@ public class DropAction implements DropActionFactory { Layer0 l0 = Layer0.getInstance(graph); Resource target = t; Resource source = s; + Resource droppedOnSeries = null; // Dropped a series over a series -> get target dataset - if(graph.isInstanceOf(target, jfree.Series) && graph.isInstanceOf(source, jfree.Series)) { + if(graph.isInstanceOf(target, jfree.Series)) { + droppedOnSeries = target; Resource dataset = graph.getPossibleObject(target, l0.PartOf); if(dataset != null) target = dataset; } // Dropped a series over an axis -> get target dataset - if(graph.isInstanceOf(target, jfree.Axis) && graph.isInstanceOf(source, jfree.Series)) { + if(graph.isInstanceOf(target, jfree.Axis)) { Resource dataset = graph.syncRequest(new PossibleObjectWithType(target, jfree.Dataset_mapToRangeAxis_Inverse, jfree.Dataset)); if(dataset != null) target = dataset; } // Move series to a dataset - if(graph.isInstanceOf(target, jfree.Dataset) && graph.isInstanceOf(source, jfree.Series)) { - // Remove from old dataset + if(graph.isInstanceOf(target, jfree.Dataset)) { + // Remove from old dataset if it was different than the new one Resource sourceDataset = graph.getPossibleObject(source, l0.PartOf); - if(sourceDataset != null) { + if(sourceDataset != null && !sourceDataset.equals(target)) { Resource sourceSeriesList = graph.getPossibleObject(sourceDataset, jfree.Dataset_seriesList); if(sourceSeriesList != null) ListUtils.removeElement(graph, sourceSeriesList, source); @@ -99,13 +111,24 @@ public class DropAction implements DropActionFactory { targetSeriesList = ListUtils.create(graph, Collections.emptyList()); graph.claim(target, jfree.Dataset_seriesList, targetSeriesList); } - - ListUtils.insertBack(graph, targetSeriesList, Collections.singleton(source)); - + + + // Series was dropped on another series. Move the dropped series to that place and recreate the list + if(droppedOnSeries != null) { + List list = ListUtils.toList(graph, targetSeriesList); + int targetIndex = list.indexOf(droppedOnSeries); + if(list.contains(source)) + list.remove(source); + list.add(targetIndex, source); + graph.deny(target, jfree.Dataset_seriesList); + targetSeriesList = ListUtils.create(graph, list); + graph.claim(target, jfree.Dataset_seriesList, targetSeriesList); + } else { + ListUtils.insertFront(graph, targetSeriesList, Collections.singleton(source)); + } + graph.claim(target, l0.ConsistsOf, source); } - - // TODO: Change the order of axis and series } }); } -- 2.47.1