下面列出了org.eclipse.jface.viewers.EditingSupport#org.eclipse.swt.dnd.TextTransfer 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void run() {
StringBuffer buf = new StringBuffer();
addCalls(viewer.getTable().getSelection(), buf);
TextTransfer plainTextTransfer = TextTransfer.getInstance();
try {
fClipboard.setContents(new String[]{convertLineTerminators(buf.toString())},
new Transfer[]{plainTextTransfer});
} catch (SWTError e) {
if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD) throw e;
if (MessageDialog
.openQuestion(fView.getViewSite().getShell(),
("CopyCallHierarchyAction.problem"),
("CopyCallHierarchyAction.clipboard_busy"))) {
run();
}
}
}
public void run() {
StringBuffer buf= new StringBuffer();
addCalls(fViewer.getTree().getSelection()[0], 0, buf);//we get the node selected in the tree
TextTransfer plainTextTransfer = TextTransfer.getInstance();//for converting plain text in a String into Platform specific representation
try{
fClipboard.setContents(
new String[]{ convertLineTerminators(buf.toString()) },
new Transfer[]{ plainTextTransfer });
} catch (SWTError e){
if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD)
throw e;
if (MessageDialog.openQuestion(fView.getViewSite().getShell(),
("CopyCallHierarchyAction.problem"), ("CopyCallHierarchyAction.clipboard_busy"))
)
{
run();
}
}
}
public void serialize() {
final Clipboard clipboard = command.getClipboard();
final String cellDelimeter = command.getCellDelimeter();
final String rowDelimeter = command.getRowDelimeter();
final TextTransfer textTransfer = TextTransfer.getInstance();
final StringBuilder textData = new StringBuilder();
int currentRow = 0;
for (LayerCell[] cells : copiedCells) {
int currentCell = 0;
for (LayerCell cell : cells) {
final String delimeter = ++currentCell < cells.length ? cellDelimeter : "";
if (cell != null) {
textData.append(cell.getDataValue() + delimeter);
} else {
textData.append(delimeter);
}
}
if (++currentRow < copiedCells.length) {
textData.append(rowDelimeter);
}
}
clipboard.setContents(new Object[]{textData.toString()}, new Transfer[]{textTransfer});
}
public void run(TreeColumn treeCol, TreeItem treeItem, int columnNum) throws XViewerException, Exception {
if (treeCol != null) {
XViewerColumn xCol = (XViewerColumn) treeCol.getData();
String data = null;
if (xCol instanceof IXViewerValueColumn) {
data = ((IXViewerValueColumn) xCol).getColumnText(treeItem.getData(), xCol, columnNum);
} else {
data =
((IXViewerLabelProvider) xViewer.getLabelProvider()).getColumnText(treeItem.getData(), xCol, columnNum);
}
if (data != null && !data.equals("")) { //$NON-NLS-1$
if (option == Option.View) {
String html = HtmlUtil.simplePage(HtmlUtil.getPreData(data));
new HtmlDialog(treeCol.getText() + " " + XViewerText.get("data"), //$NON-NLS-1$//$NON-NLS-2$
treeCol.getText() + " " + XViewerText.get("data"), html).open(); //$NON-NLS-1$ //$NON-NLS-2$
} else {
clipboard.setContents(new Object[] {data}, new Transfer[] {TextTransfer.getInstance()});
}
}
}
}
/**
* Copies the current selection to the clipboard.
*
* @param table
* the data source
*/
protected void copy() {
Object selection = AbapGitView.this.viewer.getStructuredSelection().getFirstElement();
if (selection != null && selection instanceof IRepository) {
IRepository currRepository = ((IRepository) selection);
String repoStatusString = currRepository.getStatusText() == null ? "" : currRepository.getStatusText(); //$NON-NLS-1$
String repoUserString = currRepository.getCreatedEmail() == null ? currRepository.getCreatedBy()
: currRepository.getCreatedEmail();
String lastChangedAt = currRepository.getDeserializedAt();
if (lastChangedAt == null || lastChangedAt.equals("0.0")) { //$NON-NLS-1$
lastChangedAt = currRepository.getCreatedAt();
}
String repoLastChangedString = getFormattedDate(lastChangedAt);
final StringBuilder data = new StringBuilder();
data.append(currRepository.getPackage() + " " + currRepository.getUrl() + " " + currRepository.getBranchName() + " " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ repoUserString + " " + repoLastChangedString + " " + repoStatusString); //$NON-NLS-1$ //$NON-NLS-2$
final Clipboard clipboard = new Clipboard(AbapGitView.this.viewer.getControl().getDisplay());
clipboard.setContents(new String[] { data.toString() }, new TextTransfer[] { TextTransfer.getInstance() });
clipboard.dispose();
}
}
/**
* Set the text data into TextTransfer.
*
* @see org.eclipse.swt.dnd.DragSourceListener#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
*/
public void dragSetData(DragSourceEvent event) {
// check that requested data type is supported
if (!TextTransfer.getInstance().isSupportedType(event.dataType)) {
return;
}
// get the source text
int sourceOffset = this.dragSource.getPosition().getOffset();
int sourceLength = this.dragSource.getPosition().getLength();
Position sourcePosition = dragSource.getPosition();
String sourceText = "";
try {
sourceText = getDocument().get(sourcePosition.getOffset(), sourcePosition.getLength());
} catch (BadLocationException e) {
TexlipsePlugin.log("Could not set drag data.", e);
return;
}
// set the data
event.data = sourceText;
}
@Override
public void runWithKey(final boolean excludeActionHeader) {
// it seems impossible this could ever be null since we treat it as non-null in the constructor.
if (errorTraceTreeViewer == null) {
return;
}
final TLCError trace = errorTraceTreeViewer.getCurrentTrace();
if (!trace.hasTrace()) {
// safeguard in addition to isEnabled
return;
}
final Clipboard clipboard = new Clipboard(display);
clipboard.setContents(new Object[] { trace.toSequenceOfRecords(!excludeActionHeader) },
new Transfer[] { TextTransfer.getInstance() });
clipboard.dispose();
}
/**
* テーブルの選択されている部分をヘッダー付きでクリップボードにコピーします
*
* @param header ヘッダー
* @param table テーブル
*/
public static void copyTable(String[] header, Table table) {
TableItem[] tableItems = table.getSelection();
StringBuilder sb = new StringBuilder();
sb.append(StringUtils.join(header, "\t"));
sb.append("\r\n");
for (TableItem column : tableItems) {
String[] columns = new String[header.length];
for (int i = 0; i < header.length; i++) {
columns[i] = column.getText(i);
}
sb.append(StringUtils.join(columns, "\t"));
sb.append("\r\n");
}
Clipboard clipboard = new Clipboard(Display.getDefault());
clipboard.setContents(new Object[] { sb.toString() }, new Transfer[] { TextTransfer.getInstance() });
}
/**
* ツリーの選択されている部分をヘッダー付きでクリップボードにコピーします
*
* @param header ヘッダー
* @param tree ツリー
*/
public static void copyTree(String[] header, Tree tree) {
TreeItem[] treeItems = tree.getSelection();
StringBuilder sb = new StringBuilder();
sb.append(StringUtils.join(header, "\t"));
sb.append("\r\n");
for (TreeItem column : treeItems) {
String[] columns = new String[header.length];
for (int i = 0; i < header.length; i++) {
columns[i] = column.getText(i);
}
sb.append(StringUtils.join(columns, "\t"));
sb.append("\r\n");
}
Clipboard clipboard = new Clipboard(Display.getDefault());
clipboard.setContents(new Object[] { sb.toString() }, new Transfer[] { TextTransfer.getInstance() });
}
/**
* 执行复制时对标记的处理,复制后在OS系统中不能包含标记占位符 ;
*/
private void copy() {
super.doOperation(ITextOperationTarget.COPY);
TextTransfer plainTextTransfer = TextTransfer.getInstance();
HSTextTransfer hsTextTransfer = HSTextTransfer.getInstance();
Clipboard clipboard = new Clipboard(getTextWidget().getDisplay());
String plainText = (String) clipboard.getContents(plainTextTransfer);
if (plainText == null || plainText.length() == 0) {
return;
}
plainText = plainText.replaceAll(System.getProperty("line.separator"), "\n");
plainText = plainText.replaceAll(TmxEditorConstanst.LINE_SEPARATOR_CHARACTER + "", "");
plainText = plainText.replaceAll(TmxEditorConstanst.TAB_CHARACTER + "", "\t");
plainText = plainText.replaceAll(TmxEditorConstanst.SPACE_CHARACTER + "", " ");
plainText = plainText.replaceAll("\u200B", "");
clipboard.clearContents();
Object[] data = new Object[] { PATTERN.matcher(plainText).replaceAll(""), plainText };
Transfer[] types = new Transfer[] { plainTextTransfer, hsTextTransfer };
clipboard.setContents(data, types);
clipboard.dispose();
}
/**
* Set the clipboard contents. Prompt to retry if clipboard is busy.
*
* @param resources
* the resources to copy to the clipboard
* @param fileNames
* file names of the resources to copy to the clipboard
* @param names
* string representation of all names
*/
private void setClipboard(final IResource[] resources, final String[] fileNames, final String names) {
try {
// set the clipboard contents
if (fileNames.length > 0) {
clipboard.setContents(new Object[] { resources, fileNames, names }, new Transfer[] {
ResourceTransfer.getInstance(), FileTransfer.getInstance(), TextTransfer.getInstance() });
} else {
clipboard.setContents(new Object[] { resources, names },
new Transfer[] { ResourceTransfer.getInstance(), TextTransfer.getInstance() });
}
} catch (final SWTError e) {
if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { throw e; }
if (MessageDialog.openQuestion(shell, "Problem with copy title", // TODO //$NON-NLS-1$
// ResourceNavigatorMessages.CopyToClipboardProblemDialog_title,
"Problem with copy.")) { //$NON-NLS-1$
setClipboard(resources, fileNames, names);
}
}
}
@Override
public void run() {
StringBuffer buf= new StringBuffer();
addCalls(fViewer.getTree().getSelection()[0], 0, buf);
TextTransfer plainTextTransfer= TextTransfer.getInstance();
try {
fClipboard.setContents(
new String[] { convertLineTerminators(buf.toString()) },
new Transfer[] { plainTextTransfer });
} catch (SWTError e) {
if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD)
throw e;
if (MessageDialog.openQuestion(fView.getViewSite().getShell(), CallHierarchyMessages.CopyCallHierarchyAction_problem, CallHierarchyMessages.CopyCallHierarchyAction_clipboard_busy))
run();
}
}
@Override
public void run() {
IStructuredSelection selection= (IStructuredSelection) fLocationViewer.getSelection();
StringBuffer buf= new StringBuffer();
for (Iterator<?> iterator= selection.iterator(); iterator.hasNext();) {
CallLocation location= (CallLocation) iterator.next();
buf.append(location.getLineNumber()).append('\t').append(location.getCallText());
buf.append('\n');
}
TextTransfer plainTextTransfer = TextTransfer.getInstance();
try {
fClipboard.setContents(
new String[]{ CopyCallHierarchyAction.convertLineTerminators(buf.toString()) },
new Transfer[]{ plainTextTransfer });
} catch (SWTError e){
if (e.code != DND.ERROR_CANNOT_SET_CLIPBOARD)
throw e;
if (MessageDialog.openQuestion(fViewSite.getShell(), CallHierarchyMessages.CopyCallHierarchyAction_problem, CallHierarchyMessages.CopyCallHierarchyAction_clipboard_busy))
run();
}
}
/**
* 执行复制时对标记的处理,复制后在OS系统中不能包含标记占位符 ;
*/
private void copy() {
super.doOperation(ITextOperationTarget.COPY);
TextTransfer plainTextTransfer = TextTransfer.getInstance();
XLiffTextTransfer hsTextTransfer = XLiffTextTransfer.getInstance();
Clipboard clipboard = new Clipboard(getTextWidget().getDisplay());
String plainText = (String) clipboard.getContents(plainTextTransfer);
if (plainText == null || plainText.length() == 0) {
return;
}
plainText = plainText.replaceAll(Utils.getLineSeparator(), "\n");
plainText = plainText.replaceAll(Constants.LINE_SEPARATOR_CHARACTER + "", "");
plainText = plainText.replaceAll(Constants.TAB_CHARACTER + "", "\t");
plainText = plainText.replaceAll(Constants.SPACE_CHARACTER + "", " ");
plainText = plainText.replaceAll("\u200B", "");
clipboard.clearContents();
Object[] data = new Object[] { PATTERN.matcher(plainText).replaceAll(""), plainText };
Transfer[] types = new Transfer[] { plainTextTransfer, hsTextTransfer };
clipboard.setContents(data, types, DND.CLIPBOARD);
clipboard.dispose();
}
public void serialize() {
final Clipboard clipboard = command.getClipboard();
final String cellDelimeter = command.getCellDelimeter();
final String rowDelimeter = command.getRowDelimeter();
final TextTransfer textTransfer = TextTransfer.getInstance();
final StringBuilder textData = new StringBuilder();
int currentRow = 0;
for (LayerCell[] cells : copiedCells) {
int currentCell = 0;
for (LayerCell cell : cells) {
final String delimeter = ++currentCell < cells.length ? cellDelimeter : "";
if (cell != null) {
textData.append(cell.getDataValue() + delimeter);
} else {
textData.append(delimeter);
}
}
if (++currentRow < copiedCells.length) {
textData.append(rowDelimeter);
}
}
clipboard.setContents(new Object[]{textData.toString()}, new Transfer[]{textTransfer});
}
public void toClipboard( String cliptext ) {
if ( cliptext == null ) {
return;
}
getNewClipboard();
TextTransfer tran = TextTransfer.getInstance();
clipboard.setContents( new String[] { cliptext }, new Transfer[] { tran } );
}
private boolean checkPaste() {
try {
Clipboard clipboard = new Clipboard( xParent.getDisplay() );
TextTransfer transfer = TextTransfer.getInstance();
String text = (String) clipboard.getContents( transfer );
if ( text != null && text.length() > 0 ) {
return true;
} else {
return false;
}
} catch ( Exception e ) {
return false;
}
}
public static void copyToClipboard(String html) {
if (html == null || html.length() == 0)
return;
html = html.replace("<table", "<table border=\"1\"");
Clipboard clipboard = new Clipboard(Display.getCurrent());
TextTransfer textTransfer = TextTransfer.getInstance();
HTMLTransfer htmlTransfer = HTMLTransfer.getInstance();
Transfer[] transfers = new Transfer[] {textTransfer, htmlTransfer};
Object[] data = new Object[] {html, html};
clipboard.setContents(data, transfers);
clipboard.dispose();
}
/**
* @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
*/
@Override
public void dragSetData(DragSourceEvent event) {
if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
List<XViewerColumn> selCols = getHiddenTableSelection();
Collection<String> ids = new ArrayList<>(selCols.size());
for (XViewerColumn xCol : selCols) {
ids.add(xCol.getId());
}
event.data = CollectionsUtil.toString(ids, null, ", ", null); //$NON-NLS-1$
}
}
/**
* Drag should only be from visible table
*/
public void performHiddenTableDragOver(DropTargetEvent event) {
if (!TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.detail = DND.DROP_NONE;
return;
}
// Only allow drag from visibleColTable
if (event.widget != visibleColTable) {
return;
}
event.detail = DND.DROP_MOVE;
}
private void createVisibleButtonsComposition(Composite parent) {
final Composite visibleTableComp = new Composite(parent, SWT.NONE);
visibleTableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final GridLayout gridLayout_6 = new GridLayout();
gridLayout_6.marginWidth = 0;
gridLayout_6.marginHeight = 0;
visibleTableComp.setLayout(gridLayout_6);
final Label visibleColumnsLabel = new Label(visibleTableComp, SWT.NONE);
visibleColumnsLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
visibleColumnsLabel.setText(XViewerText.get("heading.visible")); //$NON-NLS-1$
// Visible Column Table
visibleColTable = new XViewerFilteredTree(visibleTableComp);
final Tree table = visibleColTable.getViewer().getTree();
final GridData gd_table = new GridData(SWT.FILL, SWT.FILL, true, true);
gd_table.widthHint = 300;
table.setLayoutData(gd_table);
visibleColTable.getViewer().setLabelProvider(new XViewerColumnLabelProvider());
visibleColTable.getViewer().setContentProvider(new ArrayTreeContentProvider());
visibleColTable.getViewer().addSelectionChangedListener(event ->updateButtonEnablements());
visibleColTable.getViewer().addDragSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
visibleTableDragListener);
visibleColTable.getViewer().addDropSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
visibleTableDropListener);
hiddenColTable.getViewer().addDragSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
hiddenTableDragListener);
hiddenColTable.getViewer().addDropSupport(DND.DROP_MOVE, new Transfer[] {TextTransfer.getInstance()},
hiddenTableDropListener);
}
public XViewerCustDialogDragDrop(XViewerCustomizeDialog xViewerCustomizeDialog) {
this.xViewerCustomizeDialog = xViewerCustomizeDialog;
xViewerCustomizeDialog.visibleColTable.getViewer().addDragSupport(DND.DROP_MOVE,
new Transfer[] {TextTransfer.getInstance()}, visibleTableDragListener);
xViewerCustomizeDialog.visibleColTable.getViewer().addDropSupport(DND.DROP_MOVE,
new Transfer[] {TextTransfer.getInstance()}, visibleTableDropListener);
xViewerCustomizeDialog.hiddenColTable.getViewer().addDragSupport(DND.DROP_MOVE,
new Transfer[] {TextTransfer.getInstance()}, hiddenTableDragListener);
xViewerCustomizeDialog.hiddenColTable.getViewer().addDropSupport(DND.DROP_MOVE,
new Transfer[] {TextTransfer.getInstance()}, hiddenTableDropListener);
}
/**
* @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
*/
@Override
public void dragSetData(DragSourceEvent event) {
if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
List<XViewerColumn> selCols = xViewerCustomizeDialog.getHiddenTableSelection();
Collection<String> ids = new ArrayList<>(selCols.size());
for (XViewerColumn xCol : selCols) {
ids.add(xCol.getId());
}
event.data = CollectionsUtil.toString(ids, null, ", ", null); //$NON-NLS-1$
}
}
/**
* Drag should only be from visible table
*/
public void performHiddenTableDragOver(DropTargetEvent event) {
if (!TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.detail = DND.DROP_NONE;
return;
}
// Only allow drag from visibleColTable
if (event.widget != xViewerCustomizeDialog.visibleColTable) {
return;
}
event.detail = DND.DROP_MOVE;
}
public void run( )
{
StringBuffer textData = new StringBuffer( );
for ( int i = 0; i < resultSetTable.getColumnCount( ); i++ )
{
textData.append( resultSetTable.getColumn( i ).getText( ) + "\t" ); //$NON-NLS-1$
}
textData.append( "\n" ); //$NON-NLS-1$
TableItem[] tableItems = resultSetTable.getSelection( );
for ( int i = 0; i < tableItems.length; i++ )
{
for ( int j = 0; j < resultSetTable.getColumnCount( ); j++ )
{
textData.append( tableItems[i].getText( j ) + "\t" ); //$NON-NLS-1$
}
textData.append( "\n" ); //$NON-NLS-1$
}
Clipboard clipboard = new Clipboard( resultSetTable.getDisplay( ) );
clipboard.setContents( new Object[]{
textData.toString( )
}, new Transfer[]{
TextTransfer.getInstance( )
} );
clipboard.dispose( );
}
protected void copyTextToClipboard(Object object) {
final StringBuilder data = new StringBuilder();
if (object instanceof IAbapGitObject) {
data.append(((IAbapGitObject) object).getName());
} else if (object instanceof IAbapGitFile) {
data.append(((IAbapGitFile) object).getName());
}
final Clipboard clipboard = new Clipboard(Display.getDefault());
clipboard.setContents(new String[] { data.toString() }, new TextTransfer[] { TextTransfer.getInstance() });
clipboard.dispose();
}
/**
* Copies the current selection to the clipboard.
*
* @param table
* the data source
*/
protected void copy() {
Object firstElement = AbapGitDialogObjLog.this.tree.getViewer().getStructuredSelection().getFirstElement();
final StringBuilder data = new StringBuilder();
IAbapObject selectedAbapObj = (IAbapObject) firstElement;
data.append(selectedAbapObj.getName() + " | " + selectedAbapObj.getType() + " | " + selectedAbapObj.getMsgType() + " | " //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ selectedAbapObj.getMsgText());
final Clipboard clipboard = new Clipboard(AbapGitDialogObjLog.this.tree.getViewer().getControl().getDisplay());
clipboard.setContents(new String[] { data.toString() }, new TextTransfer[] { TextTransfer.getInstance() });
clipboard.dispose();
}
@Override
public boolean setDragData ( final DragSourceEvent event, final IStructuredSelection selection )
{
logger.debug ( "setDragData ( event: {}, selection: {}", event, selection );
final Collection<Item> items = ItemSelectionHelper.getSelection ( selection );
if ( items.isEmpty () )
{
logger.info ( "Empty item set for setDragData" );
return false;
}
if ( ItemTransfer.getInstance ().isSupportedType ( event.dataType ) )
{
event.data = items.toArray ( new Item[items.size ()] );
return true;
}
else if ( TextTransfer.getInstance ().isSupportedType ( event.dataType ) )
{
event.data = getItemUriData ( items );
return true;
}
else if ( URLTransfer.getInstance ().isSupportedType ( event.dataType ) )
{
event.data = getItemUriData ( items );
return true;
}
logger.debug ( "No possible transfer" );
return false;
}
@Override
public void dragSetData ( final DragSourceEvent event )
{
try
{
final IStructuredSelection selection = (IStructuredSelection)LocalSelectionTransfer.getTransfer ().getSelection ();
if ( ItemTransfer.getInstance ().isSupportedType ( event.dataType ) )
{
final List<Item> items = new ArrayList<Item> ();
for ( final Iterator<?> i = selection.iterator (); i.hasNext (); )
{
final ListEntry entry = (ListEntry)i.next ();
items.add ( entry.getItem () );
}
event.data = items.toArray ( new Item[items.size ()] );
}
else if ( TextTransfer.getInstance ().isSupportedType ( event.dataType ) )
{
setItemUriData ( event, selection );
}
else if ( URLTransfer.getInstance ().isSupportedType ( event.dataType ) )
{
setItemUriData ( event, selection );
}
}
catch ( final Exception e )
{
event.doit = false;
}
}
@Override
public boolean validateDrop ( final Object target, final int operation, final TransferData transferData )
{
if ( ItemTransfer.getInstance ().isSupportedType ( transferData ) )
{
return true;
}
if ( TextTransfer.getInstance ().isSupportedType ( transferData ) )
{
return true;
}
return false;
}