Revision: 4062
Author: [email protected]
Date: Fri Nov 15 22:01:59 2013 UTC
Log: Issue # 2074. Implemented for not to paste relationship line if
it is not selected while copying. Still need to work for single table with
self relationship line selected.
http://code.google.com/p/power-architect/source/detail?r=4062
Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java Wed May
22 20:51:29 2013 UTC
+++ /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java Fri Nov
15 22:01:59 2013 UTC
@@ -69,10 +69,10 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.prefs.Preferences;
import java.util.Set;
import java.util.WeakHashMap;
+import java.util.Map.Entry;
+import java.util.prefs.Preferences;
import javax.swing.AbstractAction;
import javax.swing.Action;
@@ -99,6 +99,7 @@
import ca.sqlpower.architect.ArchitectUtils;
import ca.sqlpower.architect.UserSettings;
import ca.sqlpower.architect.olap.MondrianModel;
+import ca.sqlpower.architect.olap.OLAPObject;
import ca.sqlpower.architect.olap.MondrianModel.Cube;
import ca.sqlpower.architect.olap.MondrianModel.CubeUsage;
import ca.sqlpower.architect.olap.MondrianModel.CubeUsages;
@@ -110,7 +111,6 @@
import ca.sqlpower.architect.olap.MondrianModel.VirtualCube;
import ca.sqlpower.architect.olap.MondrianModel.VirtualCubeDimension;
import ca.sqlpower.architect.olap.MondrianModel.VirtualCubeMeasure;
-import ca.sqlpower.architect.olap.OLAPObject;
import ca.sqlpower.architect.swingui.action.CancelAction;
import ca.sqlpower.architect.swingui.event.PlayPenLifecycleEvent;
import ca.sqlpower.architect.swingui.event.PlayPenLifecycleListener;
@@ -118,12 +118,12 @@
import ca.sqlpower.architect.swingui.event.SelectionListener;
import ca.sqlpower.architect.swingui.olap.CubePane;
import ca.sqlpower.architect.swingui.olap.DimensionPane;
-import ca.sqlpower.architect.swingui.olap.DimensionPane.HierarchySection;
import ca.sqlpower.architect.swingui.olap.OLAPPane;
import ca.sqlpower.architect.swingui.olap.OLAPTree;
import ca.sqlpower.architect.swingui.olap.PaneSection;
import ca.sqlpower.architect.swingui.olap.UsageComponent;
import ca.sqlpower.architect.swingui.olap.VirtualCubePane;
+import ca.sqlpower.architect.swingui.olap.DimensionPane.HierarchySection;
import ca.sqlpower.object.ObjectDependentException;
import ca.sqlpower.object.SPChildEvent;
import ca.sqlpower.object.SPListener;
@@ -138,11 +138,11 @@
import ca.sqlpower.sqlobject.SQLObjectRuntimeException;
import ca.sqlpower.sqlobject.SQLObjectUtils;
import ca.sqlpower.sqlobject.SQLRelationship;
-import ca.sqlpower.sqlobject.SQLRelationship.SQLImportedKey;
import ca.sqlpower.sqlobject.SQLSchema;
import ca.sqlpower.sqlobject.SQLTable;
-import ca.sqlpower.sqlobject.SQLTable.TransferStyles;
import ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider;
+import ca.sqlpower.sqlobject.SQLRelationship.SQLImportedKey;
+import ca.sqlpower.sqlobject.SQLTable.TransferStyles;
import ca.sqlpower.swingui.CursorManager;
import ca.sqlpower.swingui.ProgressWatcher;
import ca.sqlpower.swingui.SPSwingWorker;
@@ -1273,8 +1273,8 @@
}
// Although this method is called in AddObjectsTask.cleanup(), it
- // remains here so that tests will use it as well. Columns that
have
- // upstream types are ignored, so this is safe.
+ // remains here so that tests will use it as well. Columns that have
+ // upstream types are ignored, so this is safe.
if (assignTypes) {
String platform;
if (source.getParentDatabase() != null &&
source.getParentDatabase().getDataSource() != null) {
@@ -1286,25 +1286,50 @@
}
boolean isAlreadyOnPlaypen = false;
- // ensure tablename is unique
- if (logger.isDebugEnabled()) logger.debug("before add: " + tableNames);
//$NON-NLS-1$
- int suffix = uniqueTableSuffix(source.getName());
- if (suffix != 0) {
- String newName = source.getName() + "_" + suffix;
- newTable.setName(newName);
- isAlreadyOnPlaypen = true;
- }
- if (logger.isDebugEnabled()) logger.debug("after add: " + tableNames);
//$NON-NLS-1$
+ // ensure tablename is unique
+ if (logger.isDebugEnabled()) logger.debug("before add: " +
tableNames); //$NON-NLS-1$
+ int suffix = uniqueTableSuffix(source.getName());
+ if (suffix != 0) {
+ String newName = source.getName() + "_" + suffix;
+ newTable.setName(newName);
+ isAlreadyOnPlaypen = true;
+ }
+ if (logger.isDebugEnabled()) logger.debug("after add: " +
tableNames); //$NON-NLS-1$
- TablePane tp = new TablePane(newTable, getContentPane());
- logger.info("adding table "+newTable); //$NON-NLS-1$
- addImpl(tp, preferredLocation);
- tp.revalidate();
-
- createRelationshipsFromPP(source, newTable, true, isAlreadyOnPlaypen,
suffix);
- createRelationshipsFromPP(source, newTable, false, isAlreadyOnPlaypen,
suffix);
-
- return tp;
+ TablePane tp = new TablePane(newTable, getContentPane());
+ logger.info("adding table "+newTable); //$NON-NLS-1$
+ addImpl(tp, preferredLocation);
+ tp.revalidate();
+ Transferable clipboardContents =
getSession().getContext().getClipboardContents();
+ // implemented for copy/paste issue#2074
+ boolean isRelationshipLineSelected = false;
+ try {
+ Object object[] = (Object[])
clipboardContents.getTransferData(SQLObjectSelection.LOCAL_SQLOBJECT_ARRAY_FLAVOUR);
+ for (int i= 0; i< object.length; i++) {
+ if (object[i] instanceof SQLDatabase) {
+ isRelationshipLineSelected = true;
+ }
+ }
+ } catch (UnsupportedFlavorException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ if (duplicateProperties.getDefaultTransferStyle() ==
TransferStyles.REVERSE_ENGINEER) {
+ createRelationshipsFromPP(source, newTable, true,
isAlreadyOnPlaypen, suffix);
+ createRelationshipsFromPP(source, newTable, false,
isAlreadyOnPlaypen, suffix);
+ } else if (duplicateProperties.getDefaultTransferStyle() ==
TransferStyles.COPY) {
+ // draw/paste relationship line only if it is selected during
copy process
+ if (isRelationshipLineSelected) {
+ createRelationshipsFromPP(source, newTable, true,
isAlreadyOnPlaypen, suffix);
+ } else {
+ createRelationshipsFromPP(source, newTable, false,
isAlreadyOnPlaypen, suffix);
+ }
+ createRelationshipsFromPP(source, newTable, false,
isAlreadyOnPlaypen, suffix);
+ }
+
+ return tp;
}
public int uniqueTableSuffix(String base) {
--
---
You received this message because you are subscribed to the Google Groups "Architect Commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.