- show error if name is invalid.
- generate name when create/clone device-template.
Change-Id: Ie92257a95ede57fb69050baca776b9af61796ff8
Signed-off-by: minkee.lee <minkee.lee@samsung.com>
VMNameViewItem.NameError.3=If you do not need this VM(
VMNameViewItem.NameError.4=), delete VM folder.
VMNameViewItem.NameError.5=VM folder path:
-VMNameViewItem.NameError.6=Please input VM name.
+VMNameViewItem.NameError.6=Please input name.
VMsMainView.FailedToCreate.0=Failed to create Emulator (
VMsMainView.FailedToDelete.0=Failed to delete Emulator (
VMsMainView.FailedToExportAs.0=Failed to export as base image (
}
}
+ public boolean isCloneMode() {
+ if (mode == DIALOG_MODE.CLONE) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean isModifyMode() {
+ if (mode == DIALOG_MODE.MODIFY) {
+ return true;
+ }
+ return false;
+ }
+
}
public void checkValid() {
boolean isOKButtonEnable = true;
+
for (ModifyDialogItem dialogItem : itemList) {
if (!dialogItem.isValid()) {
isOKButtonEnable = false;
- break;
}
}
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
-import org.tizen.emulator.manager.renewal.resources.ImageResources;
import org.tizen.emulator.manager.ui.renewal.item.modify.comp.ModifyItem;
import org.tizen.emulator.manager.ui.renewal.widgets.ComboBox;
return comboBox.getSelectedData();
}
- public void setItemState(boolean isError, int contentRight, String msg) {
- // change combobox border
- comboBox.setError(isError);
-
- if (isError) {
- // show error icon
- if (stateIconCanvas == null || stateIconCanvas.isDisposed()) {
- stateIconCanvas = new Canvas(item.getBody(), SWT.NONE);
- stateIconCanvas.setBackgroundImage(ImageResources.ICON_STATE_ERROR.getImage());
- }
- int width = ERROR_ICON_SIZE, height = ERROR_ICON_SIZE;
- FormData data = new FormData(width, height);
- int left = contentRight + ERROR_ICON_SPACING;
- data.left = new FormAttachment(0, left);
- data.top = new FormAttachment(0, (item.getItemHeight() - height) / 2);
- stateIconCanvas.setLayoutData(data);
- stateIconCanvas.setToolTipText(msg);
- stateIconCanvas.moveAbove(null);
-
- } else {
- if (stateIconCanvas == null || stateIconCanvas.isDisposed()) {
- return;
- }
- // hide error icon
- FormData data = new FormData(0, 0);
- stateIconCanvas.setLayoutData(data);
- item.getBody().layout(true,true);
-
- }
+ @Override
+ public void changeWidgetState(boolean isError) {
+ comboBox.setError(isError);
}
protected void createCombo(ModifyItem item, int width) {
-// item.setBodyLayoutDefault();
-//
-// // create combo widget
-// GridData data = new GridData(width, COMBO_HEIGHT);
-// data.grabExcessVerticalSpace = true;
-// data.verticalAlignment = SWT.CENTER;
-
- item.getBody().setLayout(new FormLayout());
+
+ item.setBodyLayoutForm();
FormData data = new FormData();
data.left = new FormAttachment(0, ModifyItem.BODY_MARGIN_LEFT);
data.top = new FormAttachment(0, ModifyItem.WIDGET_TOP);
package org.tizen.emulator.manager.ui.renewal.item.modify.common;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Canvas;
import org.tizen.emulator.manager.renewal.resources.ImageResources;
public int getHeight() {
return item.getHeight();
}
+
+
+ public void changeWidgetState(boolean isError) {
+ // Override this.
+ // In this function, you change widget in item to error state.
+ // For example, change border color red of combobox, input text box.
+ }
+
+ /** This change item's state : error or normal */
+ public void changeItemState(boolean isError, int contentRight, String msg) {
+ changeWidgetState(isError);
+ changeStateIcon(isError, ModifyItem.BODY_MARGIN_LEFT + contentRight, msg);
+ }
+
+ public void changeStateIcon(boolean isError, int contentRight, String msg) {
+ if (isError) {
+ // show error icon
+ if (stateIconCanvas == null || stateIconCanvas.isDisposed()) {
+ stateIconCanvas = new Canvas(item.getBody(), SWT.NONE);
+ stateIconCanvas.setBackgroundImage(ImageResources.ICON_STATE_ERROR.getImage());
+ }
+ int width = ERROR_ICON_SIZE, height = ERROR_ICON_SIZE;
+ FormData data = new FormData(width, height);
+ int left = contentRight + ERROR_ICON_SPACING;
+ data.left = new FormAttachment(0, left);
+ data.top = new FormAttachment(0, (item.getItemHeight() - height) / 2);
+ stateIconCanvas.setLayoutData(data);
+ stateIconCanvas.setToolTipText(msg);
+ stateIconCanvas.moveAbove(null);
+
+ } else {
+ if (stateIconCanvas == null || stateIconCanvas.isDisposed()) {
+ return;
+ }
+ // hide error icon
+ FormData data = new FormData(0, 0);
+ stateIconCanvas.setLayoutData(data);
+ }
+
+ item.getBody().layout(true,true);
+ }
+
}
package org.tizen.emulator.manager.ui.renewal.item.modify.common;
import org.eclipse.swt.widgets.Composite;
+import org.tizen.emulator.manager.logging.EMLogger;
import org.tizen.emulator.manager.renewal.resources.ImageResources;
+import org.tizen.emulator.manager.resources.StringResources;
+import org.tizen.emulator.manager.ui.Messages;
import org.tizen.emulator.manager.ui.renewal.item.modify.comp.PropertyValue;
+import org.tizen.emulator.manager.vms.VMProperty;
+import org.tizen.emulator.manager.vms.helper.HelperClass;
public class NameItem extends TextInputBoxItem {
if (value == null) {
return;
}
- this.value = value.getName();
+ if (getDialog().isCreateMode()) {
+ this.value = value.getDefaultName();
+
+ } else if (getDialog().isCloneMode()){
+ this.value = value.getCloneName();
+
+ } else {
+ this.value = value.getName();
+ }
}
@Override
return;
}
textInputBox.setText(value);
+ textInputBox.selectAllText();
}
@Override
public boolean isValid() {
- if (value == null || value.isEmpty()) {
- return false;
+ if (!getDialog().isCreateMode()) {
+ return true;
+ }
+
+ boolean isValid = true;
+ if (getDialog().isModifyMode()) {
+ return true;
+ }
+
+ String msg = "";
+ if (getDialog().getPropertyValue().isTemplateValue()) {
+ msg = checkTemplateName(value);
+
+ } else {
+ msg = checkVMName(value);
+ }
+
+ if (!msg.isEmpty()) {
+ isValid = false;
}
- return true;
+
+ changeItemState(!isValid, INPUT_BOX_WIDTH, msg);
+ return isValid;
}
return new NameItem(getName(), getTitle());
}
+
+ public static String checkVMName(String newName) {
+ String errorMsg = ""; //$NON-NLS-1$
+ VMProperty prop = null;
+
+ if (newName.length() > VMProperty.MAX_NAME_LEN) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.0"); //$NON-NLS-1$
+
+ } else if (!HelperClass.checkString(newName)) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.1"); //$NON-NLS-1$
+
+ } else if ((prop = HelperClass.checkDupulicateName(newName)) != null) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.2"); //$NON-NLS-1$
+ EMLogger.getLogger().info(Messages.getString("VMNameViewItem.NameError.3") + newName + Messages.getString("VMNameViewItem.NameError.4") //$NON-NLS-1$ //$NON-NLS-2$
+ + StringResources.NEW_LINE + Messages.getString("VMNameViewItem.NameError.5") + prop.getPropertyFile().getAbsolutePath()); //$NON-NLS-1$
+
+ } else if (newName.isEmpty()) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.6"); //$NON-NLS-1$
+ }
+
+ return errorMsg;
+ }
+
+ public static String checkTemplateName(String newName) {
+ String errorMsg = "";
+
+ if (newName.length() > VMProperty.MAX_NAME_LEN) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.0"); //$NON-NLS-1$
+
+ } else if (HelperClass.checkDuplicateTemplateName(newName) != null) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.2"); //$NON-NLS-1$
+
+ } else if (newName.isEmpty()) {
+ errorMsg = Messages.getString("VMNameViewItem.NameError.6"); //$NON-NLS-1$
+ }
+
+ return errorMsg;
+ }
+
}
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
protected void makeBody(int textBoxWidth) {
- item.setBodyLayoutDefault();
+ item.setBodyLayoutForm();
if (getDialog().getDialogMode() == DIALOG_MODE.MODIFY
|| getDialog().getDialogMode() == DIALOG_MODE.DETAIL) {
// for create mode
private void createTextBox(int textBoxWidth) {
- GridData data = new GridData();
- data.heightHint = ModifyItem.WIDGET_HEIGHT;
- data.widthHint = textBoxWidth;
- data.grabExcessVerticalSpace = true;
- data.verticalAlignment = SWT.CENTER;
+ FormData data = new FormData(textBoxWidth, ModifyItem.WIDGET_HEIGHT);
+ data.top = new FormAttachment(0, (item.getHeight() - ModifyItem.WIDGET_HEIGHT) / 2);
+ data.left = new FormAttachment(0, ModifyItem.BODY_MARGIN_LEFT);
+
textInputBox = new TextInputBox(item.getBody(), SWT.NONE);
textInputBox.setLayoutData(data);
textInputBox.setText(value);
+ textInputBox.selectAllText();
addTextListener();
}
private void createTextLabel() {
// init canvas;
- GridData data = new GridData();
- data.heightHint = getHeight() - ModifyItem.LINE_WIDTH;
- data.horizontalAlignment = SWT.FILL;
- data.grabExcessHorizontalSpace = true;
- Canvas canvas = new Canvas(item.getBody(), SWT.NONE);
- canvas.setLayoutData(data);
-
- WidgetHelper.drawText(canvas, value, SWT.NONE);
+ Canvas detailCanvas = new Canvas(item.getBody(), SWT.NONE);
+
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(0, ModifyItem.BODY_MARGIN_LEFT);
+ data.bottom = new FormAttachment(100, -ModifyItem.LINE_WIDTH);
+ data.right = new FormAttachment(100, 0);
+
+ detailCanvas.setLayoutData(data);
+
+ WidgetHelper.drawText(detailCanvas, value, SWT.NONE);
+ }
+
+ @Override
+ public void changeWidgetState(boolean isError) {
+ if (getDialog().isCreateMode()) {
+ textInputBox.setError(isError);
+ }
}
}
import org.tizen.emulator.manager.vms.RESOLUTION;
import org.tizen.emulator.manager.vms.SKIN_SHAPE;
import org.tizen.emulator.manager.vms.VMPropertyValue;
+import org.tizen.emulator.manager.vms.helper.HelperClass;
import org.tizen.emulator.manager.vms.xml.OptionType;
import org.tizen.emulator.manager.vms.xml.SubOptionType;
}
}
+ public String getDefaultName() {
+ if (isTemplateValue()) {
+ return HelperClass.getDefaultTemplateName(templateValue);
+ } else if (isVMValue()) {
+ return HelperClass.getDefaultVMName(vmValue);
+ }
+ return "";
+ }
+
+ public String getCloneName() {
+ if (isTemplateValue()) {
+ return HelperClass.getCloneTemplateName(templateValue);
+ }
+ return "";
+ }
+
// public
/*
public RESOLUTION getResolution() {
import org.tizen.emulator.manager.platform.ProfileList;
import org.tizen.emulator.manager.ui.renewal.item.modify.common.ComboItem;
import org.tizen.emulator.manager.ui.renewal.item.modify.common.ModifyDialogItem;
-import org.tizen.emulator.manager.ui.renewal.item.modify.comp.ModifyItem;
import org.tizen.emulator.manager.ui.renewal.item.modify.comp.PropertyValue;
import org.tizen.emulator.manager.ui.renewal.item.modify.comp.SubTreeModifyItem;
import org.tizen.emulator.manager.ui.renewal.item.modify.comp.TreeItemTitle;
isValid = false;
msg = "Please select device-template.";
}
- setItemState(!isValid, ModifyItem.BODY_MARGIN_LEFT + COMBO_WIDTH, msg);
+
+ changeItemState(!isValid, COMBO_WIDTH, msg);
return isValid;
}
- public void setError(boolean isError) {
- if (isError) {
- setState(WSTATE.ERROR);
-
- } else {
- // TODO is enough ?
- setState(WSTATE.NORMAL);
- }
- redraw();
- }
-
-
-
private void addMouseListener() {
Listener mouseListener = new Listener() {
addDisposeListener();
}
+ public boolean isErrorState() {
+ return state == WSTATE.ERROR;
+ }
+
private void addPaintListener() {
this.addPaintListener(new PaintListener() {
});
}
+ public void setError(boolean isError) {
+ if (isError) {
+ setState(WSTATE.ERROR);
+
+ } else {
+ // TODO is enough ?
+ setState(WSTATE.NORMAL);
+ }
+ redraw();
+ }
+
+
return text.getText();
}
+ public void selectAllText() {
+ text.selectAll();
+ }
+
private void initBox() {
GridLayout layout = new GridLayout();
layout.marginHeight = TEXT_MARGIN_HEIGHT;
@Override
public void focusLost(FocusEvent arg0) {
+ if (isErrorState()) {
+ return;
+ }
setState(WSTATE.NORMAL);
redraw();
}
@Override
public void focusGained(FocusEvent arg0) {
+ if (isErrorState()) {
+ return;
+ }
setState(WSTATE.SELECTED);
redraw();
}
@Override
public void handleEvent(Event e) {
+ if (isErrorState()) {
+ return;
+ }
if (getState() == WSTATE.SELECTED) {
return;
}
ImageResources.TEXT_INPUT_BOX_NORMAL_B,
ImageResources.TEXT_INPUT_BOX_NORMAL_LB,
ImageResources.TEXT_INPUT_BOX_NORMAL_L);
+
+ ninePatchResourceMap.setImages(WSTATE.ERROR, ColorResources.WHITE,
+ ColorResources.WHITE,
+ ImageResources.INPUT_BOX_ERROR_LT,
+ ImageResources.INPUT_BOX_ERROR_T,
+ ImageResources.INPUT_BOX_ERROR_RT,
+ ImageResources.INPUT_BOX_ERROR_R,
+ ImageResources.INPUT_BOX_ERROR_RB,
+ ImageResources.INPUT_BOX_ERROR_B,
+ ImageResources.INPUT_BOX_ERROR_LB,
+ ImageResources.INPUT_BOX_ERROR_L);
}
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
+import java.text.SimpleDateFormat;
import java.util.Arrays;
+import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.logging.Level;
import org.tizen.emulator.manager.EmulatorManager;
+import org.tizen.emulator.manager.devices.DeviceTemplate;
+import org.tizen.emulator.manager.devices.DeviceTemplateList;
+import org.tizen.emulator.manager.devices.DeviceTemplateValue;
import org.tizen.emulator.manager.logging.EMLogger;
import org.tizen.emulator.manager.ui.MainDialog;
import org.tizen.emulator.manager.vms.EmulatorVMList;
import org.tizen.emulator.manager.vms.VMProperty;
+import org.tizen.emulator.manager.vms.VMPropertyValue;
public class HelperClass {
return null;
}
+
+ public static DeviceTemplate checkDuplicateTemplateName(String t) {
+ boolean isWindows = false;
+ if (EmulatorManager.isWin()) {
+ isWindows = true;
+ t = t.toLowerCase();
+ }
+ DeviceTemplate[] list = DeviceTemplateList.getDeviceTemplateList(true);
+ for (DeviceTemplate template : list) {
+ if (isWindows ) {
+ if (template.getValue().getName().toLowerCase().equals(t)) {
+ return template;
+ }
+ } else {
+ if (template.getValue().getName().equals(t)) {
+ return template;
+ }
+ }
+ }
+ return null;
+ }
+
public static boolean isPathAvaliable(String path) {
if (path != null) {
File partFile = new File(path+".part"); //$NON-NLS-1$
}
}
+ // Generate template name automatically.
+ // ex) "mobile(1)"
+ public static String getDefaultTemplateName(DeviceTemplateValue value) {
+ String prefix = value.getProfile();
+ prefix += "(";
+
+ String newName;
+ int count=1;
+ do {
+ newName = prefix + Integer.toString(count++) + ")";
+ } while (checkDuplicateTemplateName(newName) != null);
+
+ return newName;
+ }
+
+ public static String getCloneTemplateName(DeviceTemplateValue value) {
+ // remove (??) in the end of name.
+ String prefix = value.getName().replaceAll("\\([0-9]*\\)$", "");
+ prefix += "(";
+
+ String newName;
+ int count=2;
+ do {
+ newName = prefix + Integer.toString(count++) + ")";
+ } while (checkDuplicateTemplateName(newName) != null);
+
+ return newName;
+ }
+
+
+ public static String getDefaultVMName(VMPropertyValue value) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(value.baseImage.getProfile().substring(0,1).toLowerCase());
+ if (!value.baseImage.isStandard()) {
+ sb.append("c"); //$NON-NLS-1$
+ }
+ sb.append("-"); //$NON-NLS-1$
+
+ SimpleDateFormat formatter = new SimpleDateFormat ("MMdd"); //$NON-NLS-1$
+ Date currentTime = new Date( );
+ String timeStr = formatter.format(currentTime);
+ sb.append(timeStr);
+ sb.append("-"); //$NON-NLS-1$
+
+ int count=1;
+ String prefix = sb.toString();
+ StringBuilder vmName = null;
+ do {
+ vmName = new StringBuilder();
+ vmName.append(prefix).append(Integer.toString(count++));
+ } while (HelperClass.checkDupulicateName(vmName.toString()) != null) ;
+
+ return vmName.toString();
+ }
}