/* * 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.ImageStore; 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 BookmarkClipboard bookmarkClipboard; /** * @param BookmarkView */ public CopyAction(IViewPart view, BookmarkClipboard bookmarkClipboard, ISelectionProvider selectionProvider) { super(Messages.getString(CopyAction.class.getName() + ".text")); setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.COPY)); 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.write(text, 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; } }