X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/CopyAction.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/CopyAction.java new file mode 100644 index 0000000..5978426 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/CopyAction.java @@ -0,0 +1,109 @@ +/* + * Created on 11/08/2003 + * + */ +package com.quantum.view.bookmark; + +import java.io.IOException; +import java.io.StringWriter; +import java.util.Iterator; +import java.util.List; + +import javax.xml.parsers.ParserConfigurationException; + +import com.quantum.Messages; +import com.quantum.QuantumPlugin; +import com.quantum.model.Bookmark; +import com.quantum.model.xml.ModelToXMLConverter; +import com.quantum.util.QuantumUtil; +import com.quantum.util.xml.XMLHelper; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.dnd.TextTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.actions.SelectionListenerAction; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + + +final class CopyAction extends SelectionListenerAction { + private IViewPart view; + private BookmarkClipboard bookmarkClipboard; + + /** + * @param BookmarkView + */ + public CopyAction(IViewPart view, BookmarkClipboard bookmarkClipboard, + ISelectionProvider selectionProvider) { + super(Messages.getString(CopyAction.class.getName() + ".text")); + setImageDescriptor(QuantumPlugin.getImageDescriptor("copy.gif")); + this.view = view; + this.bookmarkClipboard = bookmarkClipboard; + selectionProvider.addSelectionChangedListener(this); + } + public void run() { + + List list = getSelectedNonResources(); + Object selection = list.get(0); + + if (selection instanceof BookmarkNode) { + Bookmark bookmark = ((BookmarkNode) selection).getBookmark(); + this.bookmarkClipboard.setBookmark(bookmark); + QuantumPlugin.getDefault().getSysClip().setContents( + new Object[] { bookmark.getName()}, + new Transfer[] { TextTransfer.getInstance()}); + + } else if (selection instanceof EntityNode) { + try { + Document doc = XMLHelper.createEmptyDocument(); + Element root = doc.createElement("metadata"); + doc.appendChild(root); + ModelToXMLConverter.getInstance().convert(root, ((EntityNode) selection).getEntity()); + StringWriter text = new StringWriter(); + try { + XMLHelper.createDOMSerializer(text).serialize(doc); + } catch (IOException e) { + e.printStackTrace(); + } + String textXml = new String(text.getBuffer()); + QuantumPlugin.getDefault().getSysClip().setContents( + new Object[] { textXml }, + new Transfer[] { TextTransfer.getInstance()}); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } + } else if (selection instanceof ColumnNode) { + String copyText = ""; //$NON-NLS-1$ + Iterator iter = list.iterator(); + IPreferenceStore store = QuantumPlugin.getDefault().getPreferenceStore(); + + while (iter.hasNext()) { + Object current = iter.next(); + if (current instanceof ColumnNode) { + ColumnNode column = (ColumnNode) current; + if (column != null) { + copyText += column.getName(); + if (iter.hasNext()) copyText += QuantumUtil.trasposeEscape(store.getString("copyColumnSeparator")); //$NON-NLS-1$ + } + } + } + + QuantumPlugin.getDefault().getSysClip().setContents( + new Object[] { copyText }, + new Transfer[] { TextTransfer.getInstance()}); + } + + } + /* (non-Javadoc) + * @see org.eclipse.ui.actions.SelectionListenerAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection) + */ + protected boolean updateSelection(IStructuredSelection selection) { + boolean enabled = super.updateSelection(selection); + + return enabled; + } + +} \ No newline at end of file