pivot-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brendan cheng <ccp...@hotmail.com>
Subject RE: Use Drag and Drop in TableView Header
Date Fri, 07 Dec 2012 02:43:50 GMT
Hi Roger,
I checked out that I have to change to non-native to get my LocalManifest to be used.  And
for this, I wonder why the RemoteManifest doesn't have containsValue implemented.  
I also changed the action to MOVE but not sure what the difference is.  
For the column index calculation, I found out that the mouse point returned from DragBegin
and Drop is different.  the Drop return the ancestor's location while DragBegin returns table
view location.  Should be this a bug?
Thanks,
Brendan

Subject: Re: Use Drag and Drop in TableView Header
From: RogerandBeth@rbwhitcomb.com
Date: Thu, 6 Dec 2012 09:42:59 -0800
To: user@pivot.apache.org

Hi Brendan,   My guess would be that you are putting the column back in the same place that
it was. I would check indexes and things in the end drop method. Without analyzing the code
in detail that would be the first thing I would check.    If that is not the case (the indexes
are all what you expect) then I would make sure that all the proper methods are being called
at the right time.    After that, you will have to do some old-fashioned debugging on it.
Do you have a Java debugger setup (like Eclipse or NetBeans or jswat)?
   On first examination it seems like most everything is correct, so it's probably something
pretty simple. 
HTH,~Roger Whitcomb

Sent from my iPhone
On Dec 6, 2012, at 4:44 AM, Brendan cheng <ccp999@hotmail.com> wrote:




Hi,
I tried to implement a drag and drop function on column of table view header.  I followed
an example of Demo and coded as followed but nothing happened.  Could you give me some advice
on my code?
Brendan
Here is:		primaryHeader.setDragSource(new DragSource() {


			private LocalManifest content = null;


			@Override
			public boolean beginDrag(Component component, int x, int y) {
				int columnIndex = primaryHeader.getTableView().getColumnAt(x);
				Column column = primaryHeader.getTableView()
						.getColumns().get(columnIndex);
				if (column != null) {
					content = new LocalManifest();
					dragDropKey = column.getName();
					content.putValue(dragDropKey, column);
				}


				return (content != null);
			}


			@Override
			public void endDrag(Component component, DropAction dropAction) {
				content = null;


			}


			@Override
			public boolean isNative() {
				return true;
			}


			@Override
			public LocalManifest getContent() {
				return content;
			}


			@Override
			public Visual getRepresentation() {
				// TODO Auto-generated method stub
				return null;
			}


			@Override
			public Point getOffset() {
				// TODO Auto-generated method stub
				return null;
			}


			@Override
			public int getSupportedDropActions() {
				return DropAction.COPY.getMask();
			}
		});


		primaryHeader.setDropTarget(new DropTarget() {
			@Override
			public DropAction dragEnter(Component component,
					Manifest dragContent, int supportedDropActions,
					DropAction userDropAction) {
				DropAction dropAction = null;


				if (dragContent.containsValue(dragDropKey)
						&& DropAction.COPY.isSelected(supportedDropActions)) {
					dropAction = DropAction.COPY;
				}


				return dropAction;
			}


			@Override
			public void dragExit(Component component) {
				// empty block
			}


			@Override
			public DropAction dragMove(Component component,
					Manifest dragContent, int supportedDropActions, int x,
					int y, DropAction userDropAction) {
				return (dragContent.containsValue(dragDropKey) ? DropAction.COPY : null);
			}


			@Override
			public DropAction userDropActionChange(Component component,
					Manifest dragContent, int supportedDropActions, int x,
					int y, DropAction userDropAction) {
				return (dragContent.containsValue(dragDropKey) ? DropAction.COPY : null);
			}


			@Override
			public DropAction drop(Component component, Manifest dragContent,
					int supportedDropActions, int x, int y,
					DropAction userDropAction) {
				DropAction dropAction = null;
				int columnIndex = primaryHeader.getTableView().getColumnAt(x);
				if (dragContent.containsValue(dragDropKey)) {
					try {
						primaryHeader
								.getTableView()
								.getColumnSource()
								.getColumns()
								.remove((Column) dragContent
										.getValue(dragDropKey));
						primaryHeader
								.getTableView()
								.getColumnSource()
								.getColumns()
								.insert((Column) dragContent
										.getValue(dragDropKey), columnIndex);
						dropAction = DropAction.COPY;
					} catch (IOException exception) {
						System.err.println(exception);
					}
				}


				dragExit(component);


				return dropAction;
			}
		});
 		 	   		  
 		 	   		  
Mime
View raw message