import org.tizen.emulator.manager.ui.table.Table;
import org.tizen.emulator.manager.ui.table.TableColumn;
import org.tizen.emulator.manager.ui.table.TableItem;
+import org.tizen.emulator.manager.ui.widgets.ImageButton;
import org.tizen.emulator.manager.vms.SKIN_SHAPE;
import org.tizen.emulator.manager.vms.VMProperty;
import org.tizen.emulator.manager.vms.VMPropertyValue;
: "");
item.setText(4, value.baseImage.getName());
item.setText(5, value.resolution.getStrTypeValue());
- if (value.fileSharePath == null || value.fileSharePath.isEmpty()) {
- item.setImage(6, ImageResources.ICON_FILE_SHARE_OFF.getImage());
+
+ // add file sharing button
+ ImageButton button = null;
+ if (item.getComposite(6) == null) {
+ button = this.makeFileSharingButton(item);
+ item.setComposite(6, button);
} else {
- item.setImage(6, ImageResources.ICON_FILE_SHARE_ON.getImage());
+ button = (ImageButton)item.getComposite(6);
}
+
+ if (button != null) {
+ button.setData(value);
+ if (value.fileSharePath == null || value.fileSharePath.isEmpty()) {
+ button.setEnabled(false);
+ } else {
+ button.setEnabled(true);
+ }
+ } else {
+ if (value.fileSharePath == null || value.fileSharePath.isEmpty()) {
+ item.setImage(6, ImageResources.ICON_FILE_SHARE_OFF.getImage());;
+ } else {
+ item.setImage(6, ImageResources.ICON_FILE_SHARE_ON.getImage());
+ }
+ }
+
item.setData(property);
settingToolTip(item, property);
if (value.fileSharePath != null && !value.fileSharePath.isEmpty()) {
String fileTip ="Path : " + value.fileSharePath;
item.setToolTipText(6, fileTip);
+ if (item.getComposite(6) != null) {
+ item.getComposite(6).setToolTipText(fileTip);
+ }
}
}
+ private ImageButton makeFileSharingButton(TableItem item) {
+ ImageButton button = new ImageButton(item.getItemCell(6), SWT.PUSH);
+ button.setSize(18, 18);
+ button.setImages(ImageResources.ICON_FILE_SHARE_ON.getImage(),
+ ImageResources.ICON_FILE_SHARE_ON.getImage(),
+ ImageResources.ICON_FILE_SHARE_ON.getImage(),
+ ImageResources.ICON_FILE_SHARE_OFF.getImage());
+ button.addListener(SWT.Selection, new Listener(){
+ @Override
+ public void handleEvent(Event event) {
+ VMPropertyValue value = (VMPropertyValue)event.widget.getData();
+ if (value == null) {
+ return;
+ }
+
+ if (value.fileSharePath != null || !value.fileSharePath.isEmpty()) {
+ org.eclipse.swt.program.Program.launch(value.fileSharePath);
+ }
+ }
+ });
+
+ return button;
+ }
+
public void modifyEmulator() {
if (table.getSelectionCount() != 1) {
return;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
class TableItemData {
String text = "";
Image image;
+ Composite composite;
Image selectedImage;
Font font;
Color backgroundColor;
return parent;
}
+ public Composite getItemCell(int index) {
+ checkWidget();
+ if (!parent.checkData(this, parent.indexOf(this))) {
+ SWT.error(SWT.ERROR_WIDGET_DISPOSED);
+ }
+ if (hasData(index)) {
+ return dataList[index].itemCanvas;
+ }
+ return null;
+ }
+
@Override
public void setBackground(Color color) {
checkWidget();
return "";
}
+ public void setComposite(int index, Composite comp) {
+ checkWidget();
+ if (comp == null) {
+ SWT.error(SWT.ERROR_NULL_ARGUMENT);
+ }
+
+ int count = Math.max(1, parent.getColumnCount());
+ if (index >= 0 && index < count) {
+ ensureData(index, count);
+ dataList[index].composite = comp;
+ parent.redraw();
+ }
+
+ }
+
+ public Composite getComposite(int index) {
+ checkWidget();
+ if (!parent.checkData(this, parent.indexOf(this))) {
+ SWT.error(SWT.ERROR_WIDGET_DISPOSED);
+ }
+ if (hasData(index)) {
+ return dataList[index].composite;
+ }
+ return null;
+ }
+
public void setToolTipText (int index, String text) {
checkWidget();
if (text == null) {
GC gc = e.gc;
Rectangle rect = ((Composite)e.widget).getClientArea();
- int imageX = rect.x;
+ int itemX = rect.x;
int textX = rect.x;
- int imageY = rect.y;
+ int itemY = rect.y;
int textY = rect.y;
- Point imageSize = new Point(0, 0);
+ Point itemSize = new Point(0, 0);
Image image = null;
+ Composite comp = item.getComposite(index);
+ boolean hasItem = false;
boolean isSelected = item.getParentTable().isSelected(item.getIndex());
if (isSelected) {
gc.fillRectangle(rect.x, rect.y, rect.width, rect.height);
if (image != null) {
- imageSize = new Point(image.getImageData().width,
+ hasItem = true;
+ itemSize = new Point(image.getImageData().width,
image.getImageData().height);
+ } else if (comp != null){
+ hasItem = true;
+ itemSize = comp.getSize();
+ if (isSelected) {
+ comp.setBackground(item.getSelectedBackground());
+ } else {
+ comp.setBackground(item.getBackground());
+ }
}
String drawingText = data.drawingText;
if (data.needRedrawingText) {
drawingText = item.getText(index);
int textWidth = TextSizeUtil.stringExtend(getFont(), drawingText).x;
- if (textWidth > (rect.width - imageSize.x - 10)) {
+ if (textWidth > (rect.width - itemSize.x - 10)) {
while((textWidth > (rect.width - 10) - TextSizeUtil.OMITLEN)
&& drawingText.length() > 1) {
drawingText = drawingText.substring(0, drawingText.length() - 1);
data.drawingTextWidth = TextSizeUtil.stringExtend(getFont(), drawingText).x;
}
- int spacing = image != null ? 5 : 0;
+ int spacing = hasItem ? 5 : 0;
switch(item.getParentTable().getColumn(index).getAlignment()) {
case SWT.LEFT:
- imageX += (image != null ? 5 : 0);
- textX += imageX + imageSize.x + spacing;
+ itemX += (hasItem ? 5 : 0);
+ textX += itemX + itemSize.x + spacing;
break;
case SWT.RIGHT:
- imageX += (image != null
- ? rect.width - imageSize.x - data.drawingTextWidth - 10
+ itemX += (hasItem
+ ? rect.width - itemSize.x - data.drawingTextWidth - 10
: rect.width - data.drawingTextWidth - 10);
- textX += imageX + imageSize.x + spacing;
+ textX += itemX + itemSize.x + spacing;
break;
case SWT.CENTER:
- imageX += (image != null
- ? (rect.width - imageSize.x - data.drawingTextWidth) / 2
+ itemX += (hasItem
+ ? (rect.width - itemSize.x - data.drawingTextWidth) / 2
: (rect.width - data.drawingTextWidth) / 2);
- textX += imageX + imageSize.x + spacing;
+ textX += itemX + itemSize.x + spacing;
break;
default:
}
if (image != null) {
- imageY = rect.y + ((rect.height - imageSize.y)/2);
- gc.drawImage(image, imageX, imageY);
+ itemY = rect.y + ((rect.height - itemSize.y)/2);
+ gc.drawImage(image, itemX, itemY);
+ } else if (comp != null) {
+ itemY = rect.y + ((rect.height - itemSize.y)/2);
+ comp.setBounds(itemX, itemY, itemSize.x, itemSize.y);
}
if (data.text != null && !data.text.isEmpty()) {