package org.tizen.emulator.manager.ui.renewal.tableviewer;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.tizen.emulator.manager.devices.DeviceTemplateValue;
import org.tizen.emulator.manager.platform.Profile;
import org.tizen.emulator.manager.platform.ProfileList;
import org.tizen.emulator.manager.renewal.resources.ImageResources;
+import org.tizen.emulator.manager.resources.StringResources;
import org.tizen.emulator.manager.ui.renewal.MainDialog;
import org.tizen.emulator.manager.ui.renewal.dialog.MessageBox;
import org.tizen.emulator.manager.ui.renewal.dialoghandler.VMModifyHandler;
}
});
+
+ makeContextMenu();
+ }
+
+ private Menu menu;
+ private MenuItem modifyMenu;
+ private MenuItem launchMenu;
+ private MenuItem deleteMenu;
+ private MenuItem resetMenu;
+ private MenuItem exportMenu;
+ private MenuItem detailMenu;
+
+ private void makeContextMenu() {
+ menu = new Menu(table);
+ launchMenu = new MenuItem(menu, SWT.PUSH);
+ launchMenu.setText("Launch");
+ launchMenu.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ launchEmulator();
+ }
+ }
+ });
+
+ modifyMenu = new MenuItem(menu, SWT.PUSH);
+ modifyMenu.setText("Modify");
+ modifyMenu.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ modifyEmulator();
+ }
+ }
+ });
+
+ deleteMenu = new MenuItem(menu, SWT.PUSH);
+ deleteMenu.setText("Delete\tDelete");
+ deleteMenu.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ deleteVMList();
+ }
+ }
+ });
+
+ resetMenu = new MenuItem(menu, SWT.PUSH);
+ resetMenu.setText("Reset");
+ resetMenu.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ resetVMList();
+ }
+ }
+ });
+
+ exportMenu = new MenuItem(menu, SWT.PUSH);
+ exportMenu.setText("Export as");
+ exportMenu.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ exportEmulatorImage();
+ }
+ }
+ });
+
+ new MenuItem(menu, SWT.SEPARATOR);
+ detailMenu = new MenuItem(menu, SWT.PUSH);
+ detailMenu.setText("Detail");
+ detailMenu.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (e.type == SWT.Selection) {
+ // TODO
+ System.out.println("Detail Info");
+ }
+ }
+ });
+
+ table.addListener(SWT.MouseDown, new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+ // context menu
+ int count = table.getSelectionCount();
+ if (count < 0) {
+ return;
+ }
+ if (count == 1) {
+ TableItem item = table.getSelection()[0];
+ VMProperty prop = (VMProperty)item.getData();
+ if (prop.isRunning()) {
+ launchMenu.setEnabled(false);
+ modifyMenu.setEnabled(false);
+ deleteMenu.setEnabled(false);
+ resetMenu.setEnabled(false);
+ exportMenu.setEnabled(false);
+ detailMenu.setEnabled(true);
+ } else {
+ launchMenu.setEnabled(true);
+ modifyMenu.setEnabled(true);
+ deleteMenu.setEnabled(true);
+ resetMenu.setEnabled(true);
+ exportMenu.setEnabled(true);
+ detailMenu.setEnabled(true);
+ }
+ } else {
+ boolean available = true;
+ for (TableItem item : table.getSelection()) {
+ VMProperty prop = (VMProperty)item.getData();
+ if (prop.isRunning()) {
+ available = false;
+ break;
+ }
+ }
+
+ launchMenu.setEnabled(false);
+ modifyMenu.setEnabled(false);
+ deleteMenu.setEnabled(available);
+ resetMenu.setEnabled(available);
+ exportMenu.setEnabled(false);
+ detailMenu.setEnabled(false);
+ }
+
+ menu.setVisible(true);
+ }
+ });
}
private void makeCreateVMCombo() {
item.setImage(6, ImageResources.ICON_FILE_SHARE_ON.getImage());
}
item.setData(property);
+
+ settingToolTip(item, property);
+ }
+
+ private void settingToolTip(TableItem item, VMProperty property) {
+ VMPropertyValue value = property.getPropertyValue();
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm");
+ // 1 - type, 2 - name
+ String baseTip = "Platform: " + value.baseImage.getPlatformName()
+ + StringResources.NEW_LINE
+ + "Last modified: " + format.format(new Date(property.getLastModifedPropertyFile()))
+ + StringResources.NEW_LINE
+ + "Last launched: "
+ + (property.getLastLaunchedTime() == 0
+ ? "X"
+ : format.format(new Date(property.getLastLaunchedTime())));
+ item.setToolTipText(1, baseTip);
+ item.setToolTipText(2, baseTip);
+ // 3 - device
+ String deviceTip = "";
+ if (value.device != null) {
+ DeviceTemplateValue deviceValue = value.device.getValue();
+ deviceTip = "Device: " + deviceValue.getName()
+ + StringResources.NEW_LINE
+ + "Type: " + deviceValue.getType()
+ + StringResources.NEW_LINE
+ + "Version: " + deviceValue.getVersion()
+
+ + (deviceValue.getManufacturer() != null
+ && deviceValue.getManufacturer().isEmpty()
+ ? StringResources.NEW_LINE
+ + "Manufacturer: " + deviceValue.getManufacturer()
+ : "");
+ item.setToolTipText(3, deviceTip);
+ }
+ // 4 - base image
+ String imageTip = "Platform: " + value.baseImage.getPlatformName()
+ + StringResources.NEW_LINE
+ + "Type: "
+ + (value.baseImage.isStandard()
+ ? "standard"
+ : "custom")
+ + StringResources.NEW_LINE
+ + "CPU: " + value.baseImage.getCpu();
+ item.setToolTipText(4, imageTip);
+ // 5 - resolution
+ String displayTip = "Display size: " + value.screenSize + " inch"
+ + StringResources.NEW_LINE
+ + "DPI: " + value.resolution.getDPI();
+ if (value.skin != null) {
+ displayTip = displayTip + StringResources.NEW_LINE + StringResources.NEW_LINE
+ + "Skin: " + value.skin.getName()
+ + StringResources.NEW_LINE
+ + "Skin shape: " + value.skin.getSkinShape().toString();
+ }
+ item.setToolTipText(5, displayTip);
+ // 6 - file sharing
+ if (value.fileSharePath != null && !value.fileSharePath.isEmpty()) {
+ String fileTip ="Path : " + value.fileSharePath;
+ item.setToolTipText(6, fileTip);
+ }
}
private void makeVMButton() {