blob: ab07cdb6f56f53c5f2f12400ed657614fad830bd (
plain) (
tree)
|
|
/*****************************************************************************
* Copyright (c) 2013 CEA LIST.
*
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.infra.nattable.utils;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import org.eclipse.papyrus.infra.nattable.Activator;
/**
* Util class to manage the clipboard
*
* @author VL222926
*
*/
public class TableClipboardUtils {
/**
* row separator in the clipboard contents
*/
public static final String AXIS_SEPARATOR = "\n"; //$NON-NLS-1$
/**
* column separator in the clipboard contents
*/
public static final String CELL_SEPARATOR = "\t"; //$NON-NLS-1$
/**
* the separator used for multivalue
*/
public static final String MULTI_VALUE_SEPARATOR = ","; //$NON-NLS-1$
private TableClipboardUtils() {
//to prevent instanciation
}
/**
*
* @param fullContents
* a table represented by a String
* @return the rows for this table
*/
public static final String[] getRows(final String fullContents) {
final String[] rows = fullContents.split(AXIS_SEPARATOR);
return rows;
}
/**
*
* @return
* the rows as string extractzed from the clipboad
*/
public static final String[] getRowsFromClipboard() {
final String clipboardContent = getClipboardContents();
if(clipboardContent != null && !clipboardContent.isEmpty()) {
return getRows(clipboardContent);
}
return null;
}
/**
*
* @return
* the columns as string extractzed from the clipboad
*/
public static final String[] getColumnsFromClipboard() {
final String clipboardContent = getClipboardContents();
if(clipboardContent != null && !clipboardContent.isEmpty()) {
return getColumns(clipboardContent);
}
return null;
}
/**
*
* @return
* the clipboard contents used to build the command
*/
private static final String getClipboardContents() {
// examine system clipboard
String bufferSystem = null;
java.awt.datatransfer.Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
if(clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) {
try {
bufferSystem = clipboard.getData(DataFlavor.stringFlavor).toString();
} catch (UnsupportedFlavorException e) {
Activator.log.error(e);
} catch (IOException e) {
Activator.log.error(e);
}
}
//using SWT
// final Display display = Display.getCurrent();
// final Clipboard cb = new Clipboard(display);
// //we use the text transfert
// final TextTransfer transfer = TextTransfer.getInstance();
//
// final Clipboard cb = new Clipboard(clipboard);
// final String contents = (String)cb.getContents(transfer);
return bufferSystem;
}
/**
*
* @param row
* a row represented by a String
* @return the cells for this row
*/
public static final String[] getCells(final String row) {
return row.split(CELL_SEPARATOR);
}
public static final String[] getColumns(final String fullContents) {
final String[] rows = fullContents.split(AXIS_SEPARATOR);
if(rows.length > 0) {
int nbColumn = rows[0].split(CELL_SEPARATOR).length;
String[] columns = new String[nbColumn];
for(int columnIndex = 0; columnIndex < nbColumn; columnIndex++) {
columns[columnIndex] = "";
}
for(int rowIndex = 0; rowIndex < rows.length; rowIndex++) {
String row = rows[rowIndex];
String[] currentColumns = row.split(CELL_SEPARATOR);
for(int columnIndex = 0; columnIndex < nbColumn; columnIndex++) {
if(currentColumns.length != 0) {
columns[columnIndex] += currentColumns[columnIndex];
} else {
columns[columnIndex] += "";
}
if(rowIndex < rows.length + 1) {
columns[columnIndex] += CELL_SEPARATOR;
} else {
columns[columnIndex] += AXIS_SEPARATOR;
}
}
}
return columns;
}
return null;
}
}
|