// keyframeWidgetText
setColor("keyframeWidgetText", new RGB(157, 157, 157));
-
+
+
+ setColor("GRAY", new RGB(177, 177, 177)); //$NON-NLS-1$
+ setColor("ITEM_SELECTED", new RGB(52, 188, 254));//$NON-NLS-1$
+ setColor("ITEM_SELECTED_FONT", new RGB(1, 132, 195));//$NON-NLS-1$
+ setColor("ITEM_HOVER", new RGB(213, 231, 243));//$NON-NLS-1$
+
+ // for NScreenItem
+ setColor("NSE_BG", new RGB(52, 188, 254)); //$NON-NLS-1$
+ setColor("NSD_BG", new RGB(160, 160, 190));//$NON-NLS-1$
+ setColor("NNE_BG", new RGB(242, 241, 240));//$NON-NLS-1$
+ setColor("NND_BG", new RGB(204, 201, 198));//$NON-NLS-1$
+
+ setColor("HSE_BG", new RGB(126, 213, 254)); //$NON-NLS-1$
+ setColor("HSD_BG", new RGB(197, 197, 216));//$NON-NLS-1$
+ setColor("HNE_BG", new RGB(210, 240, 255));//$NON-NLS-1$
+ setColor("HND_BG", new RGB(232, 231, 230));//$NON-NLS-1$
+
+ setColor("PSE_BG", new RGB(1, 112, 165)); //$NON-NLS-1$
+ setColor("PSD_BG", new RGB(155, 151, 155));//$NON-NLS-1$
+ setColor("PNE_BG", new RGB(1, 112, 165));//$NON-NLS-1$
+ setColor("PND_BG", new RGB(192, 188, 184));//$NON-NLS-1$
+
+
+ setColor("NSE_FG", new RGB(14, 13, 12)); //$NON-NLS-1$
+ setColor("NSD_FG", new RGB(112, 101, 106));//$NON-NLS-1$
+ setColor("NNE_FG", new RGB(14, 13, 12));//$NON-NLS-1$
+ setColor("NND_FG", new RGB(112, 101, 106));//$NON-NLS-1$
+
+ setColor("HSE_FG", new RGB(14, 13, 12)); //$NON-NLS-1$
+ setColor("HSD_FG", new RGB(112, 101, 106));//$NON-NLS-1$
+ setColor("HNE_FG", new RGB(14, 13, 12));//$NON-NLS-1$
+ setColor("HND_FG", new RGB(112, 101, 106));//$NON-NLS-1$
+
+ setColor("PSE_FG", new RGB(14, 13, 12)); //$NON-NLS-1$
+ setColor("PSD_FG", new RGB(14, 13, 12));//$NON-NLS-1$
+ setColor("PNE_FG", new RGB(14, 13, 12));//$NON-NLS-1$
+ setColor("PND_FG", new RGB(112, 101, 106));//$NON-NLS-1$
}
/**
public static final Color TIMEBAR_TEXT_TIME = getColor("timeBarTime");
+ public static final Color GRAY = getColor("GRAY");
+ public static final Color ITEM_SELECTED = getColor("ITEM_SELECTED");
+ public static final Color ITEM_SELECTED_FONT = getColor("ITEM_SELECTED_FONT");
+ public static final Color ITEM_HOVER = getColor("ITEM_HOVER");
+
+ public static final Color NSE_BG = getColor("NSE_BG");
+ public static final Color NSD_BG = getColor("NSD_BG");
+ public static final Color NNE_BG = getColor("NNE_BG");
+ public static final Color NND_BG = getColor("NND_BG");
+
+ public static final Color HSE_BG = getColor("HSE_BG");
+ public static final Color HSD_BG = getColor("HSD_BG");
+ public static final Color HNE_BG = getColor("HNE_BG");
+ public static final Color HND_BG = getColor("HND_BG");
+
+ public static final Color PSE_BG = getColor("PSE_BG");
+ public static final Color PSD_BG = getColor("PSD_BG");
+ public static final Color PNE_BG = getColor("PNE_BG");
+ public static final Color PND_BG = getColor("PND_BG");
+
+ public static final Color NSE_FG = getColor("NSE_FG");
+ public static final Color NSD_FG = getColor("NSD_FG");
+ public static final Color NNE_FG = getColor("NNE_FG");
+ public static final Color NND_FG = getColor("NND_FG");
+
+ public static final Color HSE_FG = getColor("HSE_FG");
+ public static final Color HSD_FG = getColor("HSD_FG");
+ public static final Color HNE_FG = getColor("HNE_FG");
+ public static final Color HND_FG = getColor("HND_FG");
+
+ public static final Color PSE_FG = getColor("PSE_FG");
+ public static final Color PSD_FG = getColor("PSD_FG");
+ public static final Color PNE_FG = getColor("PNE_FG");
+ public static final Color PND_FG = getColor("PND_FG");
+
/**
* Get Color
*
return null;
}
-
+
public Boolean hasEventValue(String eventName, String value) {
List<String> list = events.get(eventName);
if (list != null) {
if ((value != null) && (hasEventValue(eventName, value))) {
oldValues.remove(value);
- //TODO change order
+ // TODO change order
} else if ((value != null) && (oldValueText != null)) {
oldValues.remove(index);
oldValues.add(index, value);
// fireEvent(new PartEvent(PartEvent.EventType.EVENT_CHANGED, this,
// eventName, oldValue));
// }
-
+
/**
* Resets event value corresponding event name.
*
public GotoPageProperty getGotoPageproperty(String eventName) {
return gotoPageProperties.get(eventName);
}
-
+
public void removeGotoPageEventValue(String eventName) {
gotoPageProperties.remove(eventName);
fireEvent(new PartEvent(PartEvent.EventType.EVENT_CHANGED, this, eventName, null));
}
-
+
public Map<String, String> getOpenUrlProperties() {
return openUrlProperties;
}
-
+
public String getOpenUrlEventValues(String eventName) {
return openUrlProperties.get(eventName);
}
public void setOpenUrlEventValue(String eventName, String urlValue) {
- if (urlValue == null ) {
+ if (urlValue == null) {
return;
}
-
+
if (urlValue.equals(BuilderConstants.EMPTY)) {
openUrlProperties.remove(eventName);
- } else {
+ } else {
String oldValue = getOpenUrlEventValues(eventName);
if (urlValue.equals(oldValue)) {
return;
}
}
+ public void clearAllSelector() {
+ if (selectors.size() > 0) {
+ selectors.clear();
+ }
+ if (getChildren().size() > 0) {
+ for (Part child : getChildren()) {
+ child.clearAllSelector();
+ }
+ }
+
+ }
+
/**
* Removes a css selector.
*
selectors.remove(selectorName);
}
}
-
+
/**
* Removes all styles in css selector.
*
CssSelector selector = getSelector(selectorName);
if (selector != null) {
selector.reset();
-
+
fireEvent(new CssEvent(EventType.CSS_NEED_REFRESH, this, selectorName, null, null));
fireEvent(new PartEvent(PartEvent.EventType.NEED_REFRESH, this, EMPTY, EMPTY));
}
public void setSelectorPropertyValue(String selectorName, String propertyKey, String value) {
setSelectorPropertyValue(selectorName, propertyKey, value, null);
}
-
+
public void setSelectorStyles(String selectorName, Collection<CssStyle> styles) {
CssSelector selector = getSelector(selectorName);
selector.setStyles(styles);
-
+
boolean isPosition = false;
for (CssStyle style : styles) {
- String key = style.getKey();
- String value = style.getStringValue();
-
- if (key.equals(POSITION)) {
- isPosition = true;
- } else if (key.equals(LEFT)) {
- position.x = HtmlNumber.parseInt(value);
- isPosition = true;
- } else if (key.equals(TOP)) {
- position.y = HtmlNumber.parseInt(value);
- isPosition = true;
- } else if (key.equals(WIDTH)) {
- position.width = HtmlNumber.parseInt(value);
- isPosition = true;
- } else if (key.equals(HEIGHT)) {
- position.height = HtmlNumber.parseInt(value);
- isPosition = true;
- }
+ String key = style.getKey();
+ String value = style.getStringValue();
+
+ if (key.equals(POSITION)) {
+ isPosition = true;
+ } else if (key.equals(LEFT)) {
+ position.x = HtmlNumber.parseInt(value);
+ isPosition = true;
+ } else if (key.equals(TOP)) {
+ position.y = HtmlNumber.parseInt(value);
+ isPosition = true;
+ } else if (key.equals(WIDTH)) {
+ position.width = HtmlNumber.parseInt(value);
+ isPosition = true;
+ } else if (key.equals(HEIGHT)) {
+ position.height = HtmlNumber.parseInt(value);
+ isPosition = true;
+ }
}
fireEvent(new CssEvent(EventType.CSS_NEED_REFRESH, this, selectorName, null, null));
-
+
if (isPosition) {
fireEvent(new PartEvent(PartEvent.EventType.POSITION_CHANGED, this, EMPTY, EMPTY));
}
return false;
}
-// /**
-// * Checks whether a {@link Part} can be cloned.
-// *
-// * @return <code>true</code> if a {@link Part} can be cloned, and <code>false</code> otherwise
-// */
-// public boolean canCloneWidget() {
-// if (!((this instanceof Part) && descriptor != null && (descriptor instanceof WidgetPartDescriptor))) {
-// return false;
-// }
-//
-// for (Part child : getChildren()) {
-// if (!child.canCloneWidget()) {
-// return false;
-// }
-// }
-//
-// return true;
-// }
-//
-// /**
-// * Clones a {@link Part}.
-// *
-// * @return cloned {@link Part} if to clone {@link Part} is succeeded, and <code>null</code>
-// * otherwise
-// */
-// public Part cloneWidget() {
-// if (descriptor != null && descriptor instanceof WidgetPartDescriptor) {
-// Part part = new Part(ownerRef, (WidgetPartDescriptor) descriptor);
-//
-// // Clones properties.
-// List<PropertyDescriptor> propertyDescriptors = descriptor.getPropertyDescriptors();
-// int size = propertyDescriptors.size();
-// for (int i = 0; i < size; i++) {
-// PropertyDescriptor propertyDescriptor = propertyDescriptors.get(i);
-// String propertyName = propertyDescriptor.getPropertyName();
-// String propertyValue = getPropertyValue(propertyName);
-// if (propertyName != null) {
-// part.setPropertyValue(propertyName, propertyValue);
-// }
-// }
-//
-// // Clones selectors.
-// List<String> selectorNames = getSelectorNameList();
-// int selectorNamesSize = selectorNames.size();
-// for (int i = 0; i < selectorNamesSize; i++) {
-// String selectorName = selectorNames.get(i);
-// CssSelector cssSelector = getSelector(selectorName);
-// CssSelector clonedCssSelector = cssSelector.cloneCssSelector(selectorName);
-// part.addSelector(selectorName, clonedCssSelector);
-// }
-//
-// part.setUniqueId();
-// part.setAbsolutePositionProvider(absolutePositionProvider);
-//
-// return part;
-// } else {
-// return null;
-// }
-// }
+ // /**
+ // * Checks whether a {@link Part} can be cloned.
+ // *
+ // * @return <code>true</code> if a {@link Part} can be cloned, and <code>false</code> otherwise
+ // */
+ // public boolean canCloneWidget() {
+ // if (!((this instanceof Part) && descriptor != null && (descriptor instanceof
+ // WidgetPartDescriptor))) {
+ // return false;
+ // }
+ //
+ // for (Part child : getChildren()) {
+ // if (!child.canCloneWidget()) {
+ // return false;
+ // }
+ // }
+ //
+ // return true;
+ // }
+ //
+ // /**
+ // * Clones a {@link Part}.
+ // *
+ // * @return cloned {@link Part} if to clone {@link Part} is succeeded, and <code>null</code>
+ // * otherwise
+ // */
+ // public Part cloneWidget() {
+ // if (descriptor != null && descriptor instanceof WidgetPartDescriptor) {
+ // Part part = new Part(ownerRef, (WidgetPartDescriptor) descriptor);
+ //
+ // // Clones properties.
+ // List<PropertyDescriptor> propertyDescriptors = descriptor.getPropertyDescriptors();
+ // int size = propertyDescriptors.size();
+ // for (int i = 0; i < size; i++) {
+ // PropertyDescriptor propertyDescriptor = propertyDescriptors.get(i);
+ // String propertyName = propertyDescriptor.getPropertyName();
+ // String propertyValue = getPropertyValue(propertyName);
+ // if (propertyName != null) {
+ // part.setPropertyValue(propertyName, propertyValue);
+ // }
+ // }
+ //
+ // // Clones selectors.
+ // List<String> selectorNames = getSelectorNameList();
+ // int selectorNamesSize = selectorNames.size();
+ // for (int i = 0; i < selectorNamesSize; i++) {
+ // String selectorName = selectorNames.get(i);
+ // CssSelector cssSelector = getSelector(selectorName);
+ // CssSelector clonedCssSelector = cssSelector.cloneCssSelector(selectorName);
+ // part.addSelector(selectorName, clonedCssSelector);
+ // }
+ //
+ // part.setUniqueId();
+ // part.setAbsolutePositionProvider(absolutePositionProvider);
+ //
+ // return part;
+ // } else {
+ // return null;
+ // }
+ // }
/**
* Checks whether a {@link Part} can have a specific child {@link Part}.
public static final int DOWN = 1;
public enum Orientation {
- LANDSCAPE, PORTRAIT
+ LANDSCAPE, PORTRAIT;
}
public enum Scan {
private String resolution;
private Scan scan = null;
private boolean grid = false;
-
// TODO : Next Version.
// private int minDeviceHeight;
// private int maxDeviceHeight;
public void addDisablePage(String pageId) {
this.enablePages.put(pageId, false);
+ link.put(pageId, NONE);
}
public void removeEnablePage(String pageId) {
return this.link.get(pageId);
}
+ public boolean isLinked(String pageId) {
+ if (getLink(pageId) == NONE) {
+ return false;
+ }
+ return true;
+ }
+
public boolean isValidStatus(int status) {
boolean checkValue = false;
}
}
-// public void removeCssFile(String fileName) {
-// removeCssFile(getCssFile(fileName));
-// }
+ public void removeCssFileByPath(String path) {
+ removeCssFile(getCssFile(path));
+ }
-// public CssFile getCssFile(String fileName) {
-// if (fileName != null) {
-// for (CssFile cssFile : cssFiles) {
-// if (fileName.equals(cssFile.getFileName())) {
-// return cssFile;
-// }
-// }
-// }
-//
-// return null;
-// }
+ public CssFile getCssFile(String filePath) {
+ if (filePath != null) {
+ for (CssFile cssFile : cssFiles) {
+ if (filePath.equals(cssFile.getCssFilePath())) {
+ return cssFile;
+ }
+ }
+ }
+ return null;
+ }
public List<CssFile> getCssFiles() {
return cssFiles;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.EventObject;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.tizen.webuibuilder.model.css.CssSelector;
import org.tizen.webuibuilder.model.css.io.CssReader;
import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
+import org.tizen.webuibuilder.model.nscreen.Device;
import org.tizen.webuibuilder.model.nscreen.NScreenModel;
import org.tizen.webuibuilder.model.nscreen.NScreenModelController;
import org.tizen.webuibuilder.model.page.IPageDataListener;
import org.tizen.webuibuilder.ui.editor.ruler.DesignerRuler;
import org.tizen.webuibuilder.ui.editor.ruler.DesignerRulerProvider;
import org.tizen.webuibuilder.ui.editor.texteditor.TextEditor;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
import org.tizen.webuibuilder.ui.views.properties.PropertiesPage;
import org.tizen.webuibuilder.ui.views.properties.PropertiesPage.PropertiesMode;
}
public void setNscreenIndex(NScreenModel model) {
-
- String cssFileName = pageData.getName() +"." + model.getFileName();
-
- if( model.getFileName().equals( "common.css" ) )
- cssFileName = model.getFileName();
-
- File curFile = new File( pageData.getCurrentCssFile().getCssFilePath() );
-
- if ( curFile.getName().equals(cssFileName)) {
+
+ String cssFileName = pageData.getName() + "_" + model.getName() + ".css";
+
+ File curFile = new File(pageData.getCurrentCssFile().getCssFilePath());
+
+ if (curFile.getName().equals(cssFileName)) {
return;
}
// remove css selector in previous CssFile
int size = list.size();
for (int i = 0; i < size; i++) {
CssFile file = list.get(i);
-
- String fileName = new File( file.getCssFilePath() ).getName();
- if ( fileName.equals( cssFileName ) ) {
+
+ String fileName = new File(file.getCssFilePath()).getName();
+ if (fileName.equals(cssFileName)) {
// apply new css file
setCssFileToModel(pageData.getCommonCssFile());
setCssFileToModel(list.get(i));
}
+ public void setNscreenIndex2(Device device, NScreenModel itemModel) {
+ List<NScreenModel> models =
+ appManager.getNScreenModelManger().getNScreenModelsForDevice(device);
+
+ clearSelectorsOfRootPart();
+
+ List<CssFile> list = pageData.getCssFiles();
+ List<CssFile> applyList = new ArrayList<CssFile>();
+ for (NScreenModel model : models) {
+ String cssFileName = pageData.getName() + "_" + model.getName() + ".css";
+
+ int size = list.size();
+ for (int i = 0; i < size; i++) {
+ CssFile file = list.get(i);
+ String fileName = new File(file.getCssFilePath()).getName();
+ if (fileName.equals(cssFileName)) {
+ applyList.add(file);
+ break;
+ }
+ }
+ }
+
+ for (int i = 0; i < applyList.size(); i++) {
+ setCssFileToModel(applyList.get(i));
+ }
+ if (null != itemModel) {
+ String cssFileName = pageData.getName() + "_" + itemModel.getName() + ".css";
+ boolean isSet = false;
+ for (int i = 0; i < list.size(); i++) {
+ CssFile file = list.get(i);
+ String fileName = new File(file.getCssFilePath()).getName();
+ if (fileName.equals(cssFileName)) {
+ pageData.setCssFileIndex(i);
+ isSet = true;
+ break;
+ }
+ }
+ if (!isSet) {
+ pageData.setCssFileIndex(0);
+ }
+ }
+ System.out.println(pageData.getCurrentCssFile().getCssFilePath());
+ getViewer().updateStyle();
+
+ }
+
protected void setCssFileToModel(CssFile cssFile) {
if (rootPart != null && cssFile != null) {
for (CssSelector selector : cssFile.getSelectors()) {
}
protected void clearSelectorsOfRootPart() {
- CssFile currentCssFile = pageData.getCurrentCssFile();
- for (CssSelector selector : currentCssFile.getSelectors()) {
- String pageId = selector.getPageId();
- Part pagePart = rootPart.getChildOfIdPropertyValue(pageId, true);
- if (pagePart != null) {
- String partId = selector.getPartId();
- Part part = rootPart.getChildOfIdPropertyValue(partId, true);
- if (part != null) {
- part.removeSelector(selector.getSelectorName(), false);
- }
- }
- }
+ rootPart.clearAllSelector();
+ // CssFile currentCssFile = pageData.getCurrentCssFile();
+ // Collection<CssSelector> selectors = rootPart.getSelectors();
+ // for (CssSelector selector : currentCssFile.getSelectors()) {
+ // String pageId = selector.getPageId();
+ // Part pagePart = rootPart.getChildOfIdPropertyValue(pageId, true);
+ // if (pagePart != null) {
+ // String partId = selector.getPartId();
+ // Part part = rootPart.getChildOfIdPropertyValue(partId, true);
+ // if (part != null) {
+ // part.removeSelector(selector.getSelectorName(), false);
+ // }
+ // }
+ // }
}
private DescriptorManager getDescriptorManager() {
@Override
public void dispose() {
- if(controller != null){
+ if (controller != null) {
controller.removeListener();
}
toolbar.adjustLayout(false);
}
+ public void setShowingSize(List<Device> devices, NScreenItem nsItem) {
+ toolbar.setResolution(devices, nsItem);
+ }
+
public void setLandscape(boolean landscape) {
designer.setLandscape(landscape);
preview.setLandscape(landscape);
Part model = (Part) part.getModel();
if (model.isPagePart()) {
- AnimatorModelManager modelManager = appManager.getAnimatorModelManager();
+ AnimatorModelManager modelManager =
+ appManager.getAnimatorModelManager();
modelManager.setPagePart((AnimatorPagePart) model);
} else {
Part parentPart = model.getParent();
while (parentPart != null) {
if (parentPart.isPagePart()) {
- AnimatorModelManager modelManager = appManager.getAnimatorModelManager();
+ AnimatorModelManager modelManager =
+ appManager.getAnimatorModelManager();
modelManager.setPagePart((AnimatorPagePart) parentPart);
break;
}
boolean isExist = AnimatorFileReader.isExistModelFile(animatorModelJsFile);
if (isExist) {
- AnimatorFileReader.makeModelbyFile(animatorModelManager, rootPart, animatorModelJsFile, animatorModelCssFile);
+ AnimatorFileReader.makeModelbyFile(animatorModelManager, rootPart, animatorModelJsFile,
+ animatorModelCssFile);
} else {
List<AnimatorAnimation> animations =
((AnimatorPart) rootPart).createDefaultAnimations(animatorModelManager);
for (Part part : rootPart.getChildren()) {
for (AnimatorAnimation animation : animations) {
if (part.equals(animation.getPartLink())) {
- ((AnimatorPagePart) part).addAnimation(animatorModelManager, animation, Origin.EDITOR);
+ ((AnimatorPagePart) part).addAnimation(animatorModelManager, animation,
+ Origin.EDITOR);
}
}
}
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.IPerspectiveRegistry;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
import org.tizen.webuibuilder.BuilderConstants;
import org.tizen.webuibuilder.animator.AnimatorConstants;
import org.tizen.webuibuilder.animator.gef.command.AnimationCreateCommand;
import org.tizen.webuibuilder.gef.viewer.HoverBrowserRulerComposite;
import org.tizen.webuibuilder.model.Part;
import org.tizen.webuibuilder.model.app.AppManager;
+import org.tizen.webuibuilder.model.nscreen.Device;
+import org.tizen.webuibuilder.model.nscreen.Device.Orientation;
+import org.tizen.webuibuilder.model.nscreen.DeviceManger;
import org.tizen.webuibuilder.nl.BuilderMessages;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
import org.tizen.webuibuilder.utility.Platform;
import org.tizen.webuibuilder.utility.ResourceManager;
private ResolutionManger resolution;
private ScreenSize currentScreen;
private ScaleData scaleData;
+ private Device defaultDevice = null;
private boolean isLandscape;
private boolean isFiting;
+ private NScreenItem nscreen = null;
private boolean PLUS = true;
private boolean MINUS = false;
private final int MARGIN = 15;
-// private ToolItem animatorPerspectiveItem;
-// private ToolItem designerPerspectiveItem;
+ // private ToolItem animatorPerspectiveItem;
+ // private ToolItem designerPerspectiveItem;
private ToolItem animatorAnimationItem;
private Part currentSelectedPart = null;
// ProjectManager.getProjectManager(project);
// PageData pageData = mainEditor.getPageData();
// pageData.addPageListener(this);
+ defaultDevice = new Device("DefaultDevice", "Default Device [360x640, 9:16, PR:2.0]");
+ defaultDevice.setOrientation(Orientation.PORTRAIT);
+ defaultDevice.setDevicePixelRatio(2.0);
+ defaultDevice.setDeviceWidth(360);
+ defaultDevice.setDeviceHeight(640);
+ defaultDevice.setWidth(720);
+ defaultDevice.setHeight(1280);
}
public void dispose() {
// ProjectManager projectManger =
// ProjectManager.getProjectManager(project);
+ // if (!resolution.getDeviceMode().equals(appManager.getFrameworkScale())) {
+ // resolution.setScreeSizesFromDeviceMode(appManager.getFrameworkScale());
+ // screenSize.setEnabled(resolution.getEnable());
+ // resetMenuPart();
+ // }
+
if (!resolution.getDeviceMode().equals(appManager.getFrameworkScale())) {
- resolution.setScreeSizesFromDeviceMode(appManager.getFrameworkScale());
- screenSize.setEnabled(resolution.getEnable());
+ setResolution(DeviceManger.getDeviceManager().getDevices(), null);
resetMenuPart();
}
+
+ }
+
+ public void setResolution(List<Device> devices, NScreenItem nsItem) {
+ nscreen = nsItem;
+ Device device = null;
+
+ if (devices.isEmpty()) {
+ devices.add(defaultDevice);
+ }
+ resolution
+ .setScreeSizesFromNScreen(devices, mainEditor.getAppManager().getFrameworkScale());
+ screenSize.setEnabled(resolution.getEnable());
+ if (null != nscreen && nscreen.getLastResolution() != null) {
+ currentScreen = resolution.getScreenSize(nscreen.getLastResolution());
+ device = resolution.getDevice(nscreen.getLastResolution());
+ } else {
+ currentScreen = resolution.getScreenSize(0);
+ if (devices != null && !devices.isEmpty()) {
+ device = devices.get(0);
+ }
+ }
+ screenSizeText.setText(currentScreen.getScreenSize());
+
+ if (null != mainEditor.getViewer()) {
+ if (nscreen != null) {
+ if (nscreen.getScale() <= 0f || isFiting) {
+ adjustLayout(true);
+ } else {
+ mainEditor.zoomBrowser(nscreen.getScale());
+ float value = nscreen.getScale();
+ int intValue = 0;
+ value = value * 100;
+ intValue = (int) value;
+ scaleValueText.setText("" + intValue);
+ }
+ } else {
+ resetMenuPart();
+ resetScreen();
+ }
+
+ mainEditor.setNscreenIndex2(device, nscreen.getModel());
+ mainEditor.setShowingSize(currentScreen.getWidth(), currentScreen.getHeight());
+ mainEditor.scrollToCenter();
+ }
}
private void draw() {
separator = new ToolItem(toolBar, SWT.SEPARATOR);
separator.setWidth(50);
-//
-// animatorPerspectiveItem = new ToolItem(toolBar, SWT.PUSH);
-// animatorPerspectiveItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-// "video_16.png"));
-// animatorPerspectiveItem.setToolTipText(BuilderMessages.ANIMATORMODE);
-//
-// designerPerspectiveItem = new ToolItem(toolBar, SWT.PUSH);
-// designerPerspectiveItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
-// "Add_New_Page.png"));
-// designerPerspectiveItem.setToolTipText(BuilderMessages.DESIGNERMODE);
-// designerPerspectiveItem.setEnabled(false);
+ //
+ // animatorPerspectiveItem = new ToolItem(toolBar, SWT.PUSH);
+ // animatorPerspectiveItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+ // "video_16.png"));
+ // animatorPerspectiveItem.setToolTipText(BuilderMessages.ANIMATORMODE);
+ //
+ // designerPerspectiveItem = new ToolItem(toolBar, SWT.PUSH);
+ // designerPerspectiveItem.setImage(ResourceManager.getImage(BuilderConstants.ICON_DIR,
+ // "Add_New_Page.png"));
+ // designerPerspectiveItem.setToolTipText(BuilderMessages.DESIGNERMODE);
+ // designerPerspectiveItem.setEnabled(false);
scaleValue.addSelectionListener(new SelectionAdapter() {
@Override
public void resetScreen() {
// currentScreen = resolution.getScreenSize(0);
- mainEditor.setShowingSize(currentScreen.getWidth(), currentScreen.getHeight());
+ if (null != mainEditor.getViewer()) {
+ mainEditor.setShowingSize(currentScreen.getWidth(), currentScreen.getHeight());
+ }
}
private void resetMenuPart() {
public void widgetSelected(SelectionEvent e) {
screenSizeText.setText(item.getText());
currentScreen = resolution.getScreenSize(item.getText());
+ nscreen.setLastResolution(item.getText());
+ mainEditor.setNscreenIndex2(resolution.getDevice(item.getText()), null);
mainEditor.setShowingSize(currentScreen.getWidth(), currentScreen.getHeight());
}
});
float value = currentValue;
value = value / 100;
mainEditor.zoomBrowser(value);
+ if (nscreen != null) {
+ nscreen.setScale(value);
+ }
}
});
}
private void insertPreDefinedAnimations(Menu menu) {
// IProject project = ((FileEditorInput)
// mainEditor.getEditorInput()).getFile().getProject();
- AnimatorDescriptorManager manager = AnimatorDescriptorManager.getInstance(appManager);
+ AnimatorDescriptorManager manager = AnimatorDescriptorManager.getInstance(appManager);
List<CssAnimationDescriptor> cssAnimations = manager.getCssAnimations();
MenuItem preSubMenuItem = null;
private void setEditorZoom(int scale) {
float zoomScale = (float) (scale / 100.0);
mainEditor.zoomBrowser(zoomScale);
+ if (nscreen != null) {
+ nscreen.setScale(zoomScale);
+ }
}
private float autoFit(int margin) {
editor = composite.getSize();
}
- }
- else if (tabMode.endsWith(BuilderMessages.TABTEXTANIMATOR)) {
+ } else if (tabMode.endsWith(BuilderMessages.TABTEXTANIMATOR)) {
Composite composite = mainEditor.getAnimatorComposite();
if (composite instanceof HoverBrowserRulerComposite) {
Rectangle clientArea = ((HoverBrowserRulerComposite) composite).getEditorBounds();
public void adjustLayout(boolean force) {
if (force || isFiting) {
float value = autoFit(MARGIN);
+ if (nscreen != null) {
+ nscreen.setScale(value);
+ }
int intValue = 0;
value = value * 100;
intValue = (int) value;
}
});
-// animatorPerspectiveItem.addSelectionListener(new SelectionAdapter() {
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// IWorkbenchWindow activeWorkbenchWindow =
-// PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-// IPerspectiveRegistry perspectiveRegistry =
-// PlatformUI.getWorkbench().getPerspectiveRegistry();
-//
-// activeWorkbenchWindow
-// .getActivePage()
-// .setPerspective(perspectiveRegistry
-// .findPerspectiveWithLabel(BuilderMessages.ANIMATOR_PERSPECTIVE));
-// changeToAnimatorPerspective();
-// }
-// });
-//
-// designerPerspectiveItem.addSelectionListener(new SelectionAdapter() {
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// IWorkbenchWindow activeWorkbenchWindow =
-// PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-// IPerspectiveRegistry perspectiveRegistry =
-// PlatformUI.getWorkbench().getPerspectiveRegistry();
-//
-// activeWorkbenchWindow
-// .getActivePage()
-// .setPerspective(perspectiveRegistry
-// .findPerspectiveWithLabel(BuilderMessages.DESIGNER_PERSPECTIVE));
-// changeToDesignerPerspective();
-// }
-// });
+ // animatorPerspectiveItem.addSelectionListener(new SelectionAdapter() {
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // IWorkbenchWindow activeWorkbenchWindow =
+ // PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ // IPerspectiveRegistry perspectiveRegistry =
+ // PlatformUI.getWorkbench().getPerspectiveRegistry();
+ //
+ // activeWorkbenchWindow
+ // .getActivePage()
+ // .setPerspective(perspectiveRegistry
+ // .findPerspectiveWithLabel(BuilderMessages.ANIMATOR_PERSPECTIVE));
+ // changeToAnimatorPerspective();
+ // }
+ // });
+ //
+ // designerPerspectiveItem.addSelectionListener(new SelectionAdapter() {
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // IWorkbenchWindow activeWorkbenchWindow =
+ // PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ // IPerspectiveRegistry perspectiveRegistry =
+ // PlatformUI.getWorkbench().getPerspectiveRegistry();
+ //
+ // activeWorkbenchWindow
+ // .getActivePage()
+ // .setPerspective(perspectiveRegistry
+ // .findPerspectiveWithLabel(BuilderMessages.DESIGNER_PERSPECTIVE));
+ // changeToDesignerPerspective();
+ // }
+ // });
leftArrowButton.addSelectionListener(new SelectionAdapter() {
@Override
fitButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
+ // useless isFiting value
isFiting = fitButton.getSelection();
adjustLayout(true);
}
animatorAnimationItem.setEnabled(false);
}
-// public void changeToAnimatorPerspective() {
-// designerPerspectiveItem.setEnabled(true);
-// animatorPerspectiveItem.setEnabled(false);
-// }
-//
-// public void changeToDesignerPerspective() {
-// designerPerspectiveItem.setEnabled(false);
-// animatorPerspectiveItem.setEnabled(true);
-// }
+ // public void changeToAnimatorPerspective() {
+ // designerPerspectiveItem.setEnabled(true);
+ // animatorPerspectiveItem.setEnabled(false);
+ // }
+ //
+ // public void changeToDesignerPerspective() {
+ // designerPerspectiveItem.setEnabled(false);
+ // animatorPerspectiveItem.setEnabled(true);
+ // }
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
Object element = ((StructuredSelection) selection).getFirstElement();
if ((element instanceof DesignerEditPart)) {
Object model = ((DesignerEditPart) element).getModel();
- if(model instanceof Part){
- Part modelPart = (Part)model;
- if (!modelPart.isDocumentPart()) {
- currentSelectedPart = (Part) model;
- }
+ if (model instanceof Part) {
+ Part modelPart = (Part) model;
+ if (!modelPart.isDocumentPart()) {
+ currentSelectedPart = (Part) model;
+ }
}
}
}
public void setCommandStack(CommandStack commandStack) {
this.commandStack = commandStack;
}
-
}
package org.tizen.webuibuilder.ui.editor;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
+import org.tizen.webuibuilder.model.nscreen.Device;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+
public class ResolutionManger {
private List<ScreenSize> mList;
+ private List<Device> devices = null;
private boolean enable;
private String curDeviceMode = new String("");
}
public ScreenSize getScreenSize(int index) {
- return this.mList.get(index);
+ if (mList != null && !mList.isEmpty()) {
+ return this.mList.get(index);
+ }
+ return null;
}
public ScreenSize getScreenSize(String screen) {
}
+ public void setScreeSizesFromNScreen(List<Device> devices, String deviceMode) {
+ if (devices == null || deviceMode == null) {
+ return;
+ }
+
+ curDeviceMode = deviceMode;
+ removeAll();
+
+ if (deviceMode.equals("device-width")) {
+ for (Device device : devices) {
+ // StringBuffer deviceInfo = new StringBuffer();
+ // deviceInfo.append(device.getName()).append(" (").append(device.getDeviceWidth())
+ // .append("x").append(device.getDeviceHeight()).append(")");
+ // addScreenSize(device.getDeviceWidth(), device.getDeviceHeight(),
+ // deviceInfo.toString());
+ addScreenSize(device);
+ enable = true;
+ }
+ }
+
+ if (deviceMode.equals("480")) {
+ removeAll();
+ addScreenSize(480, 800, "Static 480X800");
+ enable = false;
+ }
+
+ if (deviceMode.equals("720")) {
+ removeAll();
+ addScreenSize(720, 1280, "Static 720X1280");
+ enable = false;
+ }
+ }
+
private void init() {
this.mList = new LinkedList<ScreenSize>();
+ this.devices = new ArrayList<Device>();
this.enable = true;
}
mList.add(new ScreenSize(width, height, resolutionText));
}
+ private void addScreenSize(Device device) {
+ addScreenSize(device.getDeviceWidth(), device.getDeviceHeight(), device.getDisplayName());
+ devices.add(device);
+ }
+
public String getDeviceMode() {
return curDeviceMode;
}
+
+ public Device getDevice(String resolutionText) {
+ for (Device device : devices) {
+ if (device.getDisplayName().equals(resolutionText)) {
+ return device;
+ }
+ }
+ return null;
+ }
}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import org.eclipse.jface.resource.FontRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.ui.PlatformUI;
+import org.tizen.common.util.OSChecker;
+
+
+public class FontUtil {
+ private static FontRegistry fontRegistry = new FontRegistry();
+ private static final Font defaultFont = getDADefaultFont();
+
+ // * Toolbal Layout
+ // Combo botton text font
+ public static final Font COMBO = getFont("combo", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // mac 11
+
+ // Combo drop-down list text font
+ public static final Font DROPDOWN = getFont("dropdown", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // mac 11
+
+ // Timer
+ public static final Font TIMER = getFont("timer", resizeDefaultFont(12, 5));//$NON-NLS-1$
+ // mac version 17
+
+ // tab button font
+ public static final Font TAB_BUTTON_FONT = getFont("tab_button_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ // * Time-Line Layout
+ // Edit Chart Dlg.
+ public static final Font ADDITEM_BUTTON_FONT =
+ getFont("additem_button_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font FLOATING = getFont("float_renderer", resizeDefaultFont(14, 1));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font NSCREEN_TITLE =
+ getFont("nscreen_title", setDefaultFontStyleAndSize(SWT.ITALIC, 15));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font COMMON = getFont("nscreen_common", resizeDefaultFont(14, 1));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font ORIENTATION = getFont("nscreen_orientation", resizeDefaultFont(14, 1));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font PIXELRATIO = getFont("nscreen_pixelratio", resizeDefaultFont(14, 1));//$NON-NLS-1$
+ // mac 11
+ public static final Font DEVICE = getFont("nscreen_device", resizeDefaultFont(12, 1));//$NON-NLS-1$
+ // mac 11
+
+ // ui event text font
+ public static final Font TIMELINE_UIEVENT_FONT =
+ getFont("timeline_uievent_font", resizeDefaultFont(7, 3));//$NON-NLS-1$
+
+ // * Open Trace
+ // Inner title : saved file and temporary file
+ public static final Font OPEN_TRACE_INNER_TITLE =
+ getFont("open_trace_inner_title", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // mac 11
+
+ // * Edit Chart
+ // Title
+ public static final Font EDIT_CHART_DLG_TITLE =
+ getFont("edit_chart_dlg_title", resizeDefaultFont(9, 0));//$NON-NLS-1$
+ // Button
+ public static final Font EDIT_CHART_DLG_BUTTON =
+ getFont("edit_chart_dlg_button", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // Item Name
+ public static final Font EDIT_CHART_DLG_ITEM_NAME =
+ getFont("edit_chart_item_name", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // Item SubName
+ public static final Font EDIT_CHART_DLG_ITEM_SUB_NAME =
+ getFont("edit_chart_item_sub_name", resizeDefaultFont(9, 2));//$NON-NLS-1$
+
+ // DA table header and header group font
+ public static final Font TABLE_HEADER_FONT =
+ getFont("table_header_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ // DA table cell font (contents font)
+ public static final Font TABLE_CELL_FONT = getFont("table_cell_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font EXPLORER_CELL_FONT =
+ getFont("table_cell_font", resizeDefaultFont(15, 3));//$NON-NLS-1$
+
+ public static final Font DETAIL_INFO_FONT =
+ getFont("detail_info_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ // * About Dlg.
+ public static final Font ABOUT_TEXT = getFont("about_text", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // mac 11
+ public static final Font DIALOG_BUTTON_FONT =
+ getFont("dialog_button_font", resizeDefaultFont(9, 2));//$NON-NLS-1$
+ // mac 11
+
+ // * stop progress dialog
+ public static final Font STOP_PROGRESS_FONT =
+ getFont("stop_progress_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ public static final Font PROGRESS_FONT = getFont("progress_font", resizeDefaultFont(9, 3));//$NON-NLS-1$
+
+ // * not support
+ public static final Font TOOLTIP = getFont("tooltip", resizeDefaultFont(10, 1));//$NON-NLS-1$
+ public static final Font CIRCULAR_GRAPH_VALUE_FONT =
+ getFont("circular_graph_value_font", resizeDefaultFont(13, 5));//$NON-NLS-1$
+ // mac 18
+
+ public static final Font CIRCULAR_GRAPH_MEASURE_FONT =
+ getFont("circular_graph_measure_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font CIRCULAR_LABEL_FONT =
+ getFont("circular_label_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font BAR_GRAPH_LABEL_FONT =
+ getFont("bar_graph_label_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font BAR_GRAPH_FONT = getFont("bar_graph_font", resizeDefaultFont(6, 5));//$NON-NLS-1$
+ // mac 11
+
+ public static final Font LOCK_LABEL_FONT = getFont("lock_label_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+
+ public static final Font SCORE_TITLE_FONT =
+ getFont("score_title_font", setDefaultFontStyleAndSize(SWT.BOLD, 10));//$NON-NLS-1$
+
+ // * chart
+ public static final Font CHART_TOOLTIP_FONT =
+ getFont("chart_tootip_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+
+ public static final Font CHART_AXIS_FONT = getFont("chart_axis_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+
+ public static final Font CHART_ARROW_TID_FONT =
+ getFont("chart_arrow_tid_font", resizeDefaultFont(7, 3));//$NON-NLS-1$
+
+ // * chart board
+ public static final Font CHART_NAME_FONT = getFont("chart_name_font", resizeDefaultFont(8, 3));//$NON-NLS-1$
+
+ // * context menu
+ public static final Font CONTEXT_MENU_TITLE_FONT =
+ getFont("context_menu_title_font", resizeDefaultFont(9, 3));//$NON-NLS-1$
+
+ public static final Font CONTEXT_MENU_ITEM_FONT =
+ getFont("context_menu_item_font", resizeDefaultFont(9, 3));//$NON-NLS-1$
+
+ // * configuration
+ public static final Font CONFIGURATION_TABLE_TITLE_FONT =
+ getFont("configuration_table_title_font", resizeDefaultFont(9, 3));//$NON-NLS-1$
+
+ // timeline
+ public static final Font TIMELINE_FONT = getFont("timeline_font", resizeDefaultFont(8, 3)); //$NON-NLS-1$
+
+ public static final Font TIMELINE_TICK_FONT = getFont("time_tick", resizeDefaultFont(6, 3));//$NON-NLS-1$
+ public static final Font TIMELINE_BALLOON_FONT =
+ getFont("time_balloon", resizeDefaultFont(8, 3));//$NON-NLS-1$
+
+ private static Font getFont(String fontName, FontData[] fontData) {
+ if (!fontRegistry.hasValueFor(fontName)) {
+ fontRegistry.put(fontName, fontData);
+ }
+ return fontRegistry.get(fontName);
+ }
+
+ public static FontData[] resizeDefaultFont(int size, int mac) {
+ if (OSChecker.isMAC()) {
+ return resizeDefaultFont(size + mac);
+ }
+ return resizeDefaultFont(size);
+ }
+
+ public static FontData[] resizeDefaultFont(int size) {
+ FontData[] fontData = defaultFont.getFontData();
+ for (int i = 0; i < fontData.length; i++) {
+ fontData[i].setHeight(size);
+ }
+ return fontData;
+ }
+
+ public static FontData[] setDefaultFontStyle(int style) {
+ FontData[] fontData = defaultFont.getFontData();
+ for (int i = 0; i < fontData.length; i++) {
+ fontData[i].setStyle(style);
+ }
+ return fontData;
+ }
+
+ public static FontData[] setDefaultFontStyleAndSize(int style, int size) {
+ FontData[] fontData = defaultFont.getFontData();
+ for (int i = 0; i < fontData.length; i++) {
+ fontData[i].setStyle(style);
+ fontData[i].setHeight(size);
+ }
+ return fontData;
+ }
+
+ public static Font getDADefaultFont() {
+ String fontName = null;
+ if (OSChecker.isLinux()) {
+ fontName = "Dejavu Sans";//$NON-NLS-1$
+ } else if (OSChecker.isWindows()) {
+ fontName = "Verdana";//$NON-NLS-1$
+ } else {
+ return PlatformUI.getWorkbench().getDisplay().getSystemFont();
+ }
+ return getFont("ex_font", new FontData[] { new FontData(fontName, 9, SWT.NORMAL) }); //$NON-NLS-1$
+ }
+
+ public static Point getTextArea(String text, GC gc) {
+ return gc.textExtent(text, SWT.DRAW_MNEMONIC);
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Canvas;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+
+
+public interface INScreenDrawRenderer {
+ public void draw(GC gc, Canvas canvas, int state, boolean isSelected, boolean isEnabled,
+ Image thumb, NScreenModel model, String pageId);
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.NScreenType;
+import org.tizen.webuibuilder.ui.views.nscreen.model.NScreenPageModel;
+
+
+public class NScreenBaseComposite extends ScrolledComposite {
+
+ private List<NScreenGroup> groups = new ArrayList<NScreenGroup>();
+ private static int SEPARATOR_HEIGHT = 10;
+ private Composite comp = null;
+ private Menu popup = null;
+ private NScreenPageModel pageModel = null;
+
+ public NScreenBaseComposite(Composite parent, int style, NScreenPageModel nscreenPageModel) {
+ super(parent, SWT.V_SCROLL);
+ pageModel = nscreenPageModel;
+ comp = new Composite(this, SWT.NONE);
+ comp.setLayout(new FormLayout());
+ comp.setBackground(NScreenItem.BG_COLOR);
+ createPopupMenu();
+
+ setContent(comp);
+ setExpandVertical(true);
+ setExpandHorizontal(true);
+ addControlListener(new ControlAdapter() {
+ public void controlResized(ControlEvent e) {
+ Rectangle r = getClientArea();
+ setMinSize(comp.computeSize(r.width, SWT.DEFAULT));
+ }
+ });
+ }
+
+ private Composite addSeparator() {
+ Composite separator = new Composite(this, SWT.NONE);
+ separator.addPaintListener(new PaintListener() {
+
+ @Override
+ public void paintControl(PaintEvent e) {
+ e.gc.setBackground(ColorResource.BLACK);
+ e.gc.fillRectangle(getBounds());
+ }
+ });
+ int size = groups.size();
+ FormData data = new FormData();
+ data.top = new FormAttachment(groups.get(size - 1), 0);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.height = SEPARATOR_HEIGHT;
+ separator.setLayoutData(data);
+ return separator;
+ }
+
+ private void createPopupMenu() {
+ popup = new Menu(getShell(), SWT.POP_UP);
+ MenuItem enableItem = new MenuItem(popup, SWT.PUSH);
+ enableItem.setText("Enable");
+ enableItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.enableAction();
+ }
+ }
+ });
+
+ MenuItem disableItem = new MenuItem(popup, SWT.PUSH);
+ disableItem.setText("Disable");
+ disableItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.disableAction();
+ }
+
+ }
+ });
+ new MenuItem(popup, SWT.SEPARATOR);
+
+ MenuItem moveUpItem = new MenuItem(popup, SWT.PUSH);
+ moveUpItem.setText("Move up");
+ moveUpItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (null != obj && obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.moveUpAction();
+ }
+ }
+ });
+
+ MenuItem moveDownItem = new MenuItem(popup, SWT.PUSH);
+ moveDownItem.setText("Move down");
+ moveDownItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (null != obj && obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.moveDownAction();
+ }
+ }
+ });
+
+ new MenuItem(popup, SWT.SEPARATOR);
+
+ MenuItem cutLinkItem = new MenuItem(popup, SWT.PUSH);
+ cutLinkItem.setText("Cut link");
+ cutLinkItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (null != obj && obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.LinkCutAction();
+ }
+ }
+ });
+
+ MenuItem linkUpItem = new MenuItem(popup, SWT.PUSH);
+ linkUpItem.setText("Link up");
+ linkUpItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (null != obj && obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.LinkUpAction();
+ }
+ }
+ });
+
+ MenuItem linkDownItem = new MenuItem(popup, SWT.PUSH);
+ linkDownItem.setText("Link down");
+ linkDownItem.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ MenuItem menuItem = (MenuItem) e.widget;
+ Object obj = menuItem.getParent().getData("caller");
+ if (null != obj && obj instanceof NScreenItem) {
+ NScreenItem item = (NScreenItem) obj;
+ item.LinkDownAction();
+ }
+ }
+ });
+ }
+
+ public void layout() {
+ comp.layout();
+ Rectangle r = getClientArea();
+ setMinSize(comp.computeSize(r.width, SWT.DEFAULT));
+ }
+
+ public NScreenGroup createNewGroup(NScreenType groupId, String title) {
+ int height = 0;
+ int count = groups.size();
+ Composite separator = null;
+ if (count > 0) {
+ for (NScreenGroup g : groups) {
+ height += g.getGroupHeight();
+ }
+ height += (count - 1) * SEPARATOR_HEIGHT;
+ separator = addSeparator();
+// height += SEPARATOR_HEIGHT;
+ }
+
+ NScreenGroup newGroup = new NScreenGroup(this, SWT.NONE, groupId);
+ if (title != null) {
+ newGroup.setTitle(title);
+ }
+
+ FormData data = new FormData();
+ if (count > 0) {
+ data.top = new FormAttachment(groups.get(count - 1), 4);
+ } else {
+ data.top = new FormAttachment(0, 0);
+ }
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.height = newGroup.getGroupHeight();
+ newGroup.setLayoutData(data);
+ newGroup.setMenu(popup);
+ groups.add(newGroup);
+ return newGroup;
+ }
+
+ public boolean hasSelection() {
+ for (NScreenGroup group : groups) {
+ if (group.hasSelection()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void checkSelection(NScreenType selectedType) {
+ for (NScreenGroup group : groups) {
+ if (group.getType() != selectedType) {
+ group.clearSelection();
+ }
+ }
+ }
+
+ public void setFocusToSelectedItem() {
+ NScreenGroup sg = null;
+ for (NScreenGroup group : groups) {
+ if (group.hasSelection()) {
+ sg = group;
+ break;
+ }
+ }
+ sg.getSelectedItem().setFocus();
+ }
+
+ public Composite getInnerComposite() {
+ return comp;
+ }
+
+ public NScreenPageModel getNScreenPageModel() {
+ return pageModel;
+ }
+
+ public List<NScreenGroup> getNScreenGroups() {
+ return groups;
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+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.webuibuilder.animator.ui.views.timeline.common.ColorResource;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.NScreenType;
+import org.tizen.webuibuilder.ui.views.nscreen.model.NScreenPageModel;
+
+
+public class NScreenGroup extends Composite {
+
+ private List<NScreenItem> items = new ArrayList<NScreenItem>();
+
+ // FIXME
+ public static final int GROUP_LABEL_HEIGHT = 50;
+ public static final int MIN_GROUP_ITEM_HEIGHT = 50;
+ public static final int ITEM_MARGIN = 0;
+
+ private int height = MIN_GROUP_ITEM_HEIGHT;
+ private NScreenType groupType;
+ private String title = null;
+ private NScreenBaseComposite owner = null;
+
+ private Listener menuDisableListener = new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ Menu menu = getMenu();
+ for (MenuItem item : menu.getItems()) {
+ item.setEnabled(false);
+ }
+ }
+ };
+ private PaintListener paintListener = new PaintListener() {
+
+ @Override
+ public void paintControl(PaintEvent e) {
+ Rectangle rect = getClientArea();
+ Color color = e.display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
+ e.gc.setBackground(color);
+ e.gc.fillRectangle(rect);
+ e.gc.setForeground(ColorResource.BLACK);
+
+ if (null != title) {
+ e.gc.setFont(FontUtil.NSCREEN_TITLE);
+ Point textWH = FontUtil.getTextArea(title, e.gc);
+ int x = rect.x + (rect.width - textWH.x) / 2;
+ int y = rect.y + (GROUP_LABEL_HEIGHT - textWH.y) / 2;
+
+ e.gc.drawText(title, x, y);
+ }
+ // e.gc.setBackground(ColorResource.WHITE);
+ // int x = rect.x;
+ // int y = rect.y;
+ // int w = rect.width;
+ // int h = rect.height;
+ // e.gc.fillPolygon(new int[] { x + 2, y + 2, x + 170, y + 2, x + 170 + 0, y + 28,
+ // x + w - 2, y + 28, x + w - 2, y + h - 2, 2, y + h - 2, x + 2, y + 2 });
+ // e.gc.drawPolygon(new int[] {x +2, y+2,
+ // x + 170, y+2,
+ // x + 170 + 0, y +28,
+ // x +w -2, y+28,
+ // x+w-2, y+h-2,
+ // 2, y+h-2,
+ // x+2, y+2
+ // });
+
+ }
+ };
+
+ public NScreenGroup(NScreenBaseComposite owner, int style, NScreenType groupId) {
+ super(owner.getInnerComposite(), style);
+ this.owner = owner;
+ setLayout(new FormLayout());
+ groupType = groupId;
+ this.addPaintListener(paintListener);
+ this.addListener(SWT.MouseDown, menuDisableListener);
+ }
+
+ public NScreenPageModel getNScreenPageModel() {
+ return owner.getNScreenPageModel();
+ }
+
+ public NScreenItem addItem(NScreenModel model) {
+ int count = items.size();
+ // FIXME : contant -> margin is 1
+ int h = 0;
+ if (count > 0) {
+ h = height * (count - 1) + ITEM_MARGIN;
+ }
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, -0);
+ if (count > 0) {
+ data.top = new FormAttachment(items.get(count - 1), ITEM_MARGIN);
+ } else {
+ if (null != title) {
+ data.top = new FormAttachment(0, GROUP_LABEL_HEIGHT);
+ } else {
+ data.top = new FormAttachment(0, ITEM_MARGIN);
+ }
+ }
+ data.height = height;
+ NScreenItem newNScreen = new NScreenItem(this, SWT.NONE, model);
+ newNScreen.setLayoutData(data);
+ items.add(newNScreen);
+
+ if (!owner.hasSelection()) {
+ newNScreen.setSelection(true);
+ }
+ newNScreen.setMenu(getMenu());
+
+ data = (FormData) getLayoutData();
+ data.height = getGroupHeight();
+ return newNScreen;
+ }
+
+ public NScreenItem addItem(Image img, NScreenModel model) {
+ NScreenItem ns = addItem(model);
+ ns.setImage(img);
+ return ns;
+ }
+
+ public List<NScreenItem> getItems() {
+ return items;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getHeight() {
+ return height;
+ }
+
+ public void setHeight(int height) {
+ if (height < MIN_GROUP_ITEM_HEIGHT) {
+ height = MIN_GROUP_ITEM_HEIGHT;
+ }
+ this.height = height;
+ }
+
+ public int getGroupHeight() {
+ int h = 0;
+ if (groupType == NScreenType.COMMON) {
+ h = (height * items.size() + (items.size() - 1) * ITEM_MARGIN) + GROUP_LABEL_HEIGHT;
+ } else {
+ h = (height * items.size() + (items.size() - 1) * ITEM_MARGIN);
+ }
+ return h;
+ }
+
+ public void selected(NScreenItem selectedItem) {
+
+ for (NScreenItem item : items) {
+ if (item.isSelected()) {
+ item.setSelection(false);
+ }
+ }
+ selectedItem.setSelection(true);
+ }
+
+ public boolean hasSelection() {
+ for (NScreenItem ns : items) {
+ if (ns.isSelected()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void clearSelection() {
+ for (NScreenItem ns : items) {
+ if (ns.isSelected()) {
+ ns.setSelection(false);
+ }
+ }
+ }
+
+ public boolean setDefaultSelection() {
+ if (items.size() == 0) {
+ return false;
+ }
+ items.get(0).setSelection(true);
+ return true;
+ }
+
+ public void gotSelection() {
+ owner.checkSelection(groupType);
+ }
+
+ public NScreenType getType() {
+ return groupType;
+ }
+
+ public NScreenBaseComposite getOwner() {
+ return owner;
+ }
+
+ public void setOwner(NScreenBaseComposite owner) {
+ this.owner = owner;
+ }
+
+ public List<NScreenItem> getLinkedItems(NScreenItem item) {
+ NScreenItem root = item;
+ if (!item.isRoot()) {
+ root = item.getReference();
+ }
+
+ List<NScreenItem> linked = root.getLinkedList();
+ int size = linked.size() + 1;
+ int index = 100;
+ NScreenItem childItem = null;
+ for (NScreenItem ni : linked) {
+ int linkIndex = getItems().indexOf(ni);
+ if (linkIndex < index) {
+ index = linkIndex;
+ childItem = ni;
+ }
+ }
+
+ int firstIndex = -1;
+ if (getItems().indexOf(root) > getItems().indexOf(childItem)) {
+ firstIndex = getItems().indexOf(childItem);
+ } else {
+ firstIndex = getItems().indexOf(root);
+ }
+
+ List<NScreenItem> retList = new ArrayList<NScreenItem>();
+ for (int i = firstIndex; i < firstIndex + size; i++) {
+ retList.add(getItems().get(i));
+ }
+
+ return retList;
+ }
+
+ public void changeOrder(NScreenItem prev, List<NScreenItem> source, List<NScreenItem> target,
+ NScreenItem after) {
+ NScreenItem sourceFirst = source.get(0);
+ NScreenItem sourceLast = source.get(source.size() - 1);
+ NScreenItem targetFirst = target.get(0);
+ NScreenItem targetLast = target.get(target.size() - 1);
+
+ FormData data = null;
+
+ data = (FormData) sourceFirst.getLayoutData();
+ data.top = new FormAttachment(targetLast, NScreenGroup.ITEM_MARGIN);
+
+ if (after != null) {
+ data = (FormData) after.getLayoutData();
+ data.top = new FormAttachment(sourceLast, NScreenGroup.ITEM_MARGIN);
+ }
+
+ data = (FormData) targetFirst.getLayoutData();
+ if (null != prev) {
+ data.top = new FormAttachment(prev, NScreenGroup.ITEM_MARGIN);
+ } else {
+ data.top = new FormAttachment(0, NScreenGroup.GROUP_LABEL_HEIGHT);
+ }
+ layout();
+ }
+
+ public void changeItemIndex(List<NScreenItem> source, List<NScreenItem> target) {
+ int sourceFirstIndex = getItems().indexOf(source.get(0));
+ int sourceSize = source.size();
+ int targetSize = target.size();
+
+ for (int i = sourceFirstIndex, k = 0; i < sourceFirstIndex + targetSize && k < targetSize; i++, k++) {
+ getItems().set(i, target.get(k));
+ }
+
+ for (int i = sourceFirstIndex + targetSize, k = 0; k < sourceSize; i++, k++) {
+ getItems().set(i, source.get(k));
+ }
+ }
+
+ public void changeModelIndex(List<NScreenItem> source, List<NScreenItem> target) {
+ List<NScreenModel> models =
+ getNScreenPageModel().getAppManager().getNScreenModelManger().getNScreenModels();
+
+ int sourceFirstIndex = models.indexOf(source.get(0).getModel());
+ int sourceSize = source.size();
+ int targetSize = target.size();
+
+ for (int i = sourceFirstIndex, k = 0; i < sourceFirstIndex + targetSize && k < targetSize; i++, k++) {
+ models.set(i, target.get(k).getModel());
+ }
+
+ for (int i = sourceFirstIndex + targetSize, k = 0; k < sourceSize; i++, k++) {
+ models.set(i, source.get(k).getModel());
+ }
+ }
+
+ public NScreenItem getSelectedItem() {
+ for (NScreenItem item : items) {
+ if (item.isSelected()) {
+ return item;
+ }
+ }
+ return null;
+ }
+
+ public void createLinkTree() {
+ String pageId = owner.getNScreenPageModel().getPageData().getName();
+ for (int i = 0; i < items.size(); i++) {
+ NScreenItem item = items.get(i);
+ int dir = item.getModel().getLink(pageId);
+
+ if (dir != NScreenModel.NONE) {
+ item.setLink(dir);
+ }
+ }
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+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;
+import org.eclipse.swt.widgets.MenuItem;
+import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
+import org.tizen.webuibuilder.model.css.CssFile;
+import org.tizen.webuibuilder.model.nscreen.Device;
+import org.tizen.webuibuilder.model.nscreen.DeviceManger;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.NScreenType;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenDisableCommand;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenEnableCommand;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenLinkCutCommand;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenLinkDownCommand;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenLinkUpCommand;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenMoveDownCommand;
+import org.tizen.webuibuilder.ui.views.nscreen.command.NScreenMoveUpCommand;
+
+
+public class NScreenItem extends Composite {
+ public static final int STATE_NORMAL = 0;
+ public static final int STATE_HOVER = 1;
+ public static final int STATE_PUSH = 2;
+
+ public static final int MENU_ENABLE = 0;
+ public static final int MENU_DISABLE = 1;
+ // public static final int SEPARATOR = 2;
+ public static final int MENU_MOVE_UP = 3;
+ public static final int MENU_MOVE_DOWN = 4;
+ // public static final int SEPARATOR = 5;
+ public static final int MENU_LINK_CUT = 6;
+ public static final int MENU_LINK_UP = 7;
+ public static final int MENU_LINK_DOWN = 8;
+
+ public static final Color BG_COLOR = ColorResource.WHITE;
+
+ private int state = STATE_NORMAL;
+ private Image thumb = null;
+ private NScreenGroup parent = null;
+ private Canvas canvas = null;
+ private NScreenModel model = null;
+
+ private float scale = 0f;
+ private String lastResolution = null;
+
+ // ui only data
+ private NScreenItem reference = null;
+ private List<NScreenItem> linked = new ArrayList<NScreenItem>();
+
+ private boolean selected = false;
+
+ private INScreenDrawRenderer renderer = new NScreenSimpleRenderer();
+
+ private Listener keyListener = new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ if (parent.getType() == NScreenType.RESOLUTION) {
+ if (event.keyCode == SWT.ARROW_UP) {
+ moveUpAction();
+ } else if (event.keyCode == SWT.ARROW_DOWN) {
+ moveDownAction();
+ }
+ }
+ }
+ };
+ private Listener mouseListener = new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ if (event.type == SWT.MouseEnter) {
+ state = STATE_HOVER;
+ } else if (event.type == SWT.MouseExit) {
+ state = STATE_NORMAL;
+ } else if (event.type == SWT.MouseDown) {
+ state = STATE_PUSH;
+ setMenuState();
+ // parent.getOwner().setFocusToSelectedItem();
+ }
+
+ else if (event.type == SWT.MouseUp) {
+ state = STATE_HOVER;
+ if (event.stateMask != SWT.BUTTON2) {
+ Rectangle rect = getClientArea();
+ if (rect.contains(event.x, event.y)) {
+ clicked();
+ }
+ }
+ }
+ canvas.redraw();
+ }
+ };
+
+ private String getPageId() {
+ return parent.getNScreenPageModel().getPageData().getName();
+ }
+
+ private void setMenuState() {
+ Menu menu = getMenu();
+ menu.setData("caller", this);
+ for (MenuItem menuItem : menu.getItems()) {
+ menuItem.setEnabled(false);
+ }
+
+ if (model.getType() != NScreenType.COMMON) {
+ if (!model.isEnablePage(getPageId())) {
+ menu.getItem(MENU_ENABLE).setEnabled(true);
+ } else {
+ menu.getItem(MENU_DISABLE).setEnabled(true);
+
+ List<NScreenItem> items = parent.getItems();
+ int size = items.size();
+ int index = items.indexOf(this);
+
+ if (model.getType() != NScreenType.ORIENTATION) {
+ if (model.getLink(getPageId()) != NScreenModel.NONE) {
+ menu.getItem(MENU_LINK_CUT).setEnabled(true);
+ } else {
+ if (index > 0 && items.get(index - 1).isItemEnabled() && !isRoot()) {
+ menu.getItem(MENU_LINK_UP).setEnabled(true);
+ }
+ if (index < size - 1 && items.get(index + 1).isItemEnabled() && !isRoot()) {
+ menu.getItem(MENU_LINK_DOWN).setEnabled(true);
+ }
+ }
+
+ if (model.getType() != NScreenType.PIXELRATIO) {
+ if (index > 0 && !model.isLinked(getPageId()) && !isRoot()) {
+ menu.getItem(MENU_MOVE_UP).setEnabled(true);
+ }
+ if (index < size - 1 && !model.isLinked(getPageId()) && !isRoot()) {
+ menu.getItem(MENU_MOVE_DOWN).setEnabled(true);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public NScreenItem(Composite parent, int style, NScreenModel m) {
+ super(parent, SWT.TRANSPARENT);
+ this.parent = (NScreenGroup) parent;
+ this.model = m;
+ setLayout(new FillLayout());
+ this.setBackground(BG_COLOR);
+ canvas = new Canvas(this, SWT.TRANSPARENT);
+
+// if (model.getType() != NScreenType.COMMON) {
+// if (model.isEnablePage(getPageId())) {
+// setSelection(true);
+// }
+// }
+
+ addMouseListener();
+ canvas.addListener(SWT.KeyUp, keyListener);
+ canvas.addPaintListener(new PaintListener() {
+
+ @Override
+ public void paintControl(PaintEvent e) {
+ renderer.draw(e.gc, canvas, state, isSelected(), isItemEnabled(), thumb, model,
+ getPageId());
+ }
+ });
+ }
+
+ private void addMouseListener() {
+ canvas.addListener(SWT.MouseDown, mouseListener);
+ canvas.addListener(SWT.MouseUp, mouseListener);
+ canvas.addListener(SWT.MouseEnter, mouseListener);
+ canvas.addListener(SWT.MouseExit, mouseListener);
+ }
+
+ public void clicked() {
+ if (!isSelected()) {
+ parent.selected(this);
+ setFocus();
+ }
+
+ parent.getNScreenPageModel().getPageDesigner().setShowingSize(filterScreen(), this);
+ }
+
+ private List<Device> filterScreen() {
+ List<Device> devices = DeviceManger.getDeviceManager().getDevices();
+
+ NScreenType type = model.getType();
+
+ List<Device> selected = new ArrayList<Device>();
+ if (type == NScreenType.COMMON) {
+ selected.addAll(devices);
+ } else if (type == NScreenType.ORIENTATION) {
+ for (Device device : devices) {
+ if (device.getOrientation() == null
+ || device.getOrientation().toString()
+ .equals(model.getOrientation().toString())) {
+ selected.add(device);
+ }
+ }
+ } else if (type == NScreenType.PIXELRATIO) {
+ for (Device device : devices) {
+ if (device.getDevicePixelRatio() == model.getDevicePixelRatio()) {
+ selected.add(device);
+ }
+ }
+ } else if (type == NScreenType.RESOLUTION) {
+ for (Device device : devices) {
+ if (model.getDeviceWidth() == device.getDeviceWidth()
+ && model.getDeviceHeight() == device.getDeviceHeight()) {
+ selected.add(device);
+ break;
+ }
+ }
+ } else {
+ // custom
+ }
+ return selected;
+ }
+
+ public void setImage(Image img) {
+ thumb = img;
+ }
+
+ public void setSelection(boolean isSelected) {
+ if (selected == isSelected) {
+ return;
+ }
+ selected = isSelected;
+
+ if (isSelected) {
+ ((NScreenGroup) getParent()).gotSelection();
+ }
+
+ canvas.redraw();
+ }
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public int getState() {
+ return state;
+ }
+
+ public boolean isItemEnabled() {
+ return model.isEnablePage(getPageId());
+ }
+
+ public void setItemEnabled(boolean enabled) {
+ if (enabled) { // enable
+ model.addEnablePage(getPageId());
+ state = STATE_NORMAL;
+ } else { // disable
+ model.addDisablePage(getPageId());
+ }
+ }
+
+ @Override
+ public void setMenu(Menu menu) {
+ super.setMenu(menu);
+ canvas.setMenu(menu);
+ }
+
+ public NScreenModel getModel() {
+ return model;
+ }
+
+ public void setModel(NScreenModel model) {
+ this.model = model;
+ }
+
+ public String getFileName() {
+ if (model.isLinked(getPageId())) {
+ return reference.getFileName();
+ }
+ String pageId = parent.getNScreenPageModel().getPageData().getName();
+ String screenName = model.getName();
+ StringBuffer strBuffer = new StringBuffer();
+ strBuffer.append(pageId).append("_").append(screenName).append(".css");
+ return strBuffer.toString();
+ }
+
+ public void enableAction() {
+ Command command = new NScreenEnableCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+
+ public void disableAction() {
+ Command command = new NScreenDisableCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+
+ public void moveUpAction() {
+ int index = parent.getItems().indexOf(this);
+ if (index != 0 && isItemEnabled() && !isLinked() && !isRoot()) {
+ Command command = new NScreenMoveUpCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+ }
+
+ public void moveDownAction() {
+ int index = parent.getItems().indexOf(this);
+ if (index < parent.getItems().size() - 1 && isItemEnabled() && !isLinked() && !isRoot()) {
+ Command command = new NScreenMoveDownCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+ }
+
+ public void LinkCutAction() {
+ Command command = new NScreenLinkCutCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+
+ public void LinkUpAction() {
+ Command command = new NScreenLinkUpCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+
+ public void LinkDownAction() {
+ Command command = new NScreenLinkDownCommand(this);
+ parent.getNScreenPageModel().getPageDesigner().getCommandStack().execute(command);
+ }
+
+ public void redrawItem() {
+ canvas.redraw();
+ }
+
+ public boolean setFocus() {
+ return canvas.setFocus();
+ }
+
+ public List<NScreenItem> getLinkedList() {
+ return linked;
+ }
+
+ public <T> boolean addList(List<T> list, T item) {
+ int index = list.indexOf(item);
+ if (index < 0) {
+ list.add(item);
+ return true;
+ }
+ return false;
+ }
+
+ public int setLink(int direction) {
+ if (direction == SWT.UP) {
+ int index = parent.getItems().indexOf(this);
+ reference = parent.getItems().get(index - 1);
+ if (reference.isLinked()) {
+ reference = reference.getReference();
+ }
+ model.addLink(getPageId(), NScreenModel.UP);
+ addList(reference.getLinkedList(), this);
+ } else if (direction == SWT.DOWN) {
+ int index = parent.getItems().indexOf(this);
+ reference = parent.getItems().get(index + 1);
+ if (reference.isLinked()) {
+ reference = reference.getReference();
+ }
+ model.addLink(getPageId(), NScreenModel.DOWN);
+ addList(reference.getLinkedList(), this);
+ } else if (direction == SWT.NONE) {
+ direction = model.getLink(getPageId());
+ reference.getLinkedList().remove(this);
+ model.addLink(getPageId(), NScreenModel.NONE);
+ reference.redrawItem();
+ reference = null;
+ }
+
+ if (reference != null) {
+ reference.redrawItem();
+ }
+ return direction;
+ }
+
+ public boolean isLinked() {
+ if (model.getLink(getPageId()) == NScreenModel.NONE) {
+ return false;
+ }
+ return true;
+ }
+
+ public NScreenItem getReference() {
+ return reference;
+ }
+
+ public void setReference(NScreenItem ref) {
+ reference = ref;
+ }
+
+ public void deleteFile() {
+ String cssFolderPath = parent.getNScreenPageModel().getAppManager().getCssFolder();
+ String filePath = cssFolderPath + IPath.SEPARATOR + getFileName();
+ File newCSSFile = new File(filePath);
+
+ if (newCSSFile.exists()) {
+ newCSSFile.delete();
+ }
+
+ parent.getNScreenPageModel().getPageData().removeCssFileByPath(filePath);
+ }
+
+ public void copyFile(NScreenItem source) {
+ String sourceFileName = source.getFileName();
+ String targetFileName = getFileName();
+
+ String filePath = parent.getNScreenPageModel().getAppManager().getCssFolder();
+// CssFile sourceCssFile = new CssFile(filePath + IPath.SEPARATOR + sourceFileName);
+ File sourceFile = new File(filePath + IPath.SEPARATOR + sourceFileName);
+ File targetFile = new File(filePath + IPath.SEPARATOR + targetFileName);
+ parent.getNScreenPageModel().getPageData().removeCssFileByPath(filePath + IPath.SEPARATOR+sourceFileName);
+
+ sourceFile.renameTo(targetFile);
+ CssFile targetCssFile = new CssFile(filePath + IPath.SEPARATOR + sourceFileName);
+ parent.getNScreenPageModel().getPageData().addCssFile(targetCssFile);
+ }
+
+ public void createFile() {
+ String filePath = parent.getNScreenPageModel().getAppManager().getCssFolder();
+ CssFile cssFile = new CssFile(filePath + IPath.SEPARATOR + getFileName());
+ File newCSSFile = new File(filePath + IPath.SEPARATOR + getFileName());
+
+ try {
+ if (!newCSSFile.exists()) {
+ File dir = newCSSFile.getParentFile();
+ dir.mkdirs();
+ newCSSFile.createNewFile();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ parent.getNScreenPageModel().getPageData().addCssFile(cssFile);
+ }
+
+ public boolean isRoot() {
+ if (!isLinked() && linked.size() > 0) {
+ return true;
+ }
+ return false;
+ }
+
+ public float getScale() {
+ return scale;
+ }
+
+ public void setScale(float scale) {
+ this.scale = scale;
+ }
+
+ public String getLastResolution() {
+ return lastResolution;
+ }
+
+ public void setLastResolution(String last) {
+ this.lastResolution = last;
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import static org.tizen.webuibuilder.ui.views.nscreen.NScreenItem.STATE_HOVER;
+import static org.tizen.webuibuilder.ui.views.nscreen.NScreenItem.STATE_NORMAL;
+import static org.tizen.webuibuilder.ui.views.nscreen.NScreenItem.STATE_PUSH;
+
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.NScreenType;
+
+
+public class NScreenItemFloatRenderer implements INScreenDrawRenderer {
+ private static int IMAGE_SIZE = 30;
+ private static int X_MARGIN = 4;
+
+ private static int TEXT_MARGIN_X = X_MARGIN + IMAGE_SIZE + 30;
+
+ @Override
+ public void draw(GC gc, Canvas canvas, int state, boolean isSelected, boolean enabled,
+ Image thumb, NScreenModel model, String pageId) {
+// NScreenItem item = (NScreenItem) canvas.getParent();
+// Rectangle rect = canvas.getClientArea();
+//
+// int canvasX = rect.x;
+// int canvasY = rect.y;
+// int canvasW = rect.width;
+// int canvasH = rect.height;
+//
+// gc.setBackground(ColorResource.BLACK);
+// gc.fillRectangle(canvasX + 6, canvasY + 6, canvasW - 8, canvasH - 8);
+// // e.gc.fillRoundRectangle(x + 6, y + 6, w - 8, h - 8, 10, 10);
+//
+// Rectangle drawRect = checkState(new Rectangle(canvasX, canvasY, canvasW, canvasH), state);
+//
+// if (isSelected) {
+// gc.setBackground(ColorResource.BOUNCE_IN_UP);
+// } else {
+// gc.setBackground(ColorResource.WHITE);
+// }
+//
+// Rectangle linkRect =
+// new Rectangle(drawRect.x + drawRect.width - 20, drawRect.y, 20, drawRect.height);
+//
+// gc.fillRectangle(drawRect);
+// // e.gc.fillRoundRectangle(drawRect.x, drawRect.y, drawRect.width, drawRect.height,
+// // 10, 10);
+//
+// if (state == STATE_DISABLED) {
+// gc.setBackground(ColorResource.GRAY);
+// } else if (model.getType() != NScreenType.COMMON) {
+// gc.setBackground(ColorResource.NAVY);
+//
+// int direction = model.getLink(pageId);
+// int x = linkRect.x;
+// int y = linkRect.y;
+// int w = linkRect.width;
+// int h = linkRect.height;
+//
+// if (direction == NScreenModel.UP) {
+// gc.fillPolygon(new int[] { x, y + 10, x + w / 2, y, x + w, y + 10, x + w, y + h,
+// x + w / 2, y + h - 10, x, y + h });
+// } else if (direction == NScreenModel.DOWN) {
+// gc.fillPolygon(new int[] { x, y, x + w / 2, y + 10, x + w, y, x + w, y, x + w,
+// y + h - 10, x + w / 2, y + h, x, y + h - 10 });
+// } else if (item.isRoot()) {
+// gc.fillRectangle(linkRect);
+// }
+//
+// }
+//
+// // e.gc.drawRoundRectangle(drawRect.x, drawRect.y, drawRect.width, drawRect.height,
+// // 10, 10);
+// if (state == STATE_DISABLED) {
+// gc.setForeground(ColorResource.GRAY);
+// } else {
+// gc.setForeground(ColorResource.BLACK);
+// }
+// gc.drawRectangle(drawRect);
+//
+// // e.gc.setForeground(bgColors[state * 2]);
+// // e.gc.setBackground(bgColors[state * 2 + 1]);
+// //
+// // e.gc.fillGradientRectangle(rect.x, rect.y, rect.width, rect.height, true);
+// //
+// // e.gc.setForeground(fgColors[state]);
+// //
+// int targetY = (drawRect.height - IMAGE_SIZE) / 2;
+// if (thumb != null) {
+// Rectangle imgRect = thumb.getBounds();
+// gc.drawImage(thumb, imgRect.x, imgRect.y, imgRect.width, imgRect.height, drawRect.x
+// + X_MARGIN, drawRect.y + targetY, IMAGE_SIZE, IMAGE_SIZE);
+// } else {
+// gc.drawRectangle(drawRect.x + X_MARGIN, drawRect.y + targetY, IMAGE_SIZE, IMAGE_SIZE);
+// }
+//
+// // drawText
+// if (isSelected) {
+// gc.setBackground(ColorResource.BOUNCE_IN_UP);
+// } else {
+// gc.setBackground(ColorResource.WHITE);
+// }
+// if (state == STATE_DISABLED) {
+// gc.setForeground(ColorResource.GRAY);
+// } else {
+// gc.setForeground(ColorResource.BLACK);
+// }
+// Font font = gc.getFont();
+// gc.setFont(FontUtil.FLOATING);
+// gc.drawText(model.getName(), drawRect.x + TEXT_MARGIN_X, targetY);
+// gc.setFont(font);
+// }
+//
+// private Rectangle checkState(Rectangle rect, int state) {
+//
+// int offset = 0;
+// switch (state) {
+// case STATE_NORMAL:
+// offset = 2;
+// break;
+// case STATE_HOVER:
+// offset = 0;
+// break;
+// case STATE_PUSH:
+// offset = 5;
+// break;
+// case STATE_SELECTED:
+// offset = 3;
+// break;
+// case STATE_DISABLED:
+// offset = 2;
+// break;
+// default:
+// break;
+// }
+// rect.width = rect.width - 8;
+// rect.height = rect.height - 8;
+// rect.x = rect.x + offset;
+// rect.y = rect.y + offset;
+// return rect;
+ }
+
+}
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IActionBars;
private Action mActionHDL;
private Action mActionCustom;
private NScreenList mNScreenList;
- private Composite mParentComposite;
+ private NScreenBaseComposite mParentComposite;
class NScrrenAction extends Action {
private String mTitle;
*/
public void addNewNscreen(String title, int width, int height, String cssFileName,
boolean isSelected) {
-// String filePath = mNScreenPageModel.getAppManager().getCssFolder();
-//
-// File newCSSFile = new File(filePath + IPath.SEPARATOR + cssFileName);
-// String cssFileFullPath = newCSSFile.getAbsolutePath();
+ // String filePath = mNScreenPageModel.getAppManager().getCssFolder();
+ //
+ // File newCSSFile = new File(filePath + IPath.SEPARATOR + cssFileName);
+ // String cssFileFullPath = newCSSFile.getAbsolutePath();
NScreenModel model = new NScreenModel(title, NScreenType.CUSTOM);
model.setDeviceWidth(width);
model.setFileName(cssFileName);
Command command =
- new NScreenAddCommand(mNScreenPageModel.getAppManager().getNScreenModelManger().getNScreenModels(), model,
- mNScreenList);
+ new NScreenAddCommand(mNScreenPageModel.getAppManager().getNScreenModelManger()
+ .getNScreenModels(), model, mNScreenList);
mNScreenPageModel.getPageDesigner().getCommandStack().execute(command);
}
}
public void deleteNScreen(NScreenListItem item) {
- List<NScreenModel> list = mNScreenPageModel.getAppManager().getNScreenModelManger().getNScreenModels();
+ List<NScreenModel> list =
+ mNScreenPageModel.getAppManager().getNScreenModelManger().getNScreenModels();
if (list.get(0) == item.getModel()) {
showInfomationDialog("can not delete the default screen.");
return;
* @see org.eclipse.ui.part.Page#dispose()
*/
public void dispose() {
- mNScreenList.removeAll();
+ // mNScreenList.removeAll();
super.dispose();
}
* @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
- mParentComposite = parent;
-
- makeActions();
- contributeToActionBars();
-
- mNScreenList = new NScreenList(parent, mNScreenPageModel);
-
- List<NScreenModel> list = mNScreenPageModel.getAppManager().getNScreenModelManger().getNScreenModels();
+ mParentComposite = new NScreenBaseComposite(parent, SWT.NONE, mNScreenPageModel);
+ // addSample();
+ List<NScreenModel> models =
+ mNScreenPageModel.getAppManager().getNScreenModelManger().getNScreenModels();
+ List<NScreenGroup> groups = mParentComposite.getNScreenGroups();
+ NScreenGroup group = null;
+
+ for (NScreenModel model : models) {
+ if (groups.size() == 0) {
+ group =
+ mParentComposite.createNewGroup(model.getType(), mNScreenPageModel
+ .getPageData().getName());
+ group.setHeight(50);
+ group.addItem(model);
+ } else {
+ NScreenGroup selectedGroup = null;
+ for (NScreenGroup g : groups) {
+ if (g.getType() == model.getType()) {
+ selectedGroup = g;
+ break;
+ }
+ }
+ if (selectedGroup == null) {
+ group = mParentComposite.createNewGroup(model.getType(), null);
+ group.setHeight(50);
+ group.addItem(model);
+ } else {
+ selectedGroup.addItem(model);
+ }
+ }
+ }
- for (int i = 0, size = list.size(); i < size; i++) {
- NScreenModel nsModel = list.get(i);
- mNScreenList.addItem(nsModel, i == 0 ? true : false);
+ for (NScreenGroup g : mParentComposite.getNScreenGroups()) {
+ g.createLinkTree();
}
- mNScreenList.layout();
}
@Override
* @see org.eclipse.ui.part.Page#getControl()
*/
public Control getControl() {
- return mNScreenList.getControl();
+ return mParentComposite;
+ // return mNScreenList.getControl();
}
@Override
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import static org.tizen.webuibuilder.ui.views.nscreen.NScreenItem.STATE_HOVER;
+import static org.tizen.webuibuilder.ui.views.nscreen.NScreenItem.STATE_NORMAL;
+import static org.tizen.webuibuilder.ui.views.nscreen.NScreenItem.STATE_PUSH;
+
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.tizen.webuibuilder.animator.ui.views.timeline.common.ColorResource;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.NScreenType;
+
+
+public class NScreenSimpleRenderer implements INScreenDrawRenderer {
+ private static int X_MARGIN = 10;
+
+ @Override
+ public void draw(GC gc, Canvas canvas, int state, boolean isSelected, boolean isEnabled,
+ Image thumb, NScreenModel model, String pageId) {
+ NScreenItem item = (NScreenItem) canvas.getParent();
+ NScreenGroup group = (NScreenGroup) item.getParent();
+ int size = group.getItems().size();
+ int index = group.getItems().indexOf(item);
+ Rectangle rect = canvas.getClientArea();
+
+ gc.setBackground(checkBackgroundColor(canvas, state, isSelected, isEnabled));
+ gc.fillRectangle(rect);
+
+ gc.setForeground(ColorResource.BLACK);
+ if (index == 0 || index == size - 1) {
+ if (index == size - 1) {
+ gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height - 1);
+ gc.drawRectangle(rect.x + 1, rect.y - 1, rect.width - 3, rect.height - 1);
+
+ }
+ if (index == 0) {
+ gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height);
+ gc.drawRectangle(rect.x + 1, rect.y + 1, rect.width - 3, rect.height + 4);
+ }
+ } else {
+ gc.drawRectangle(rect.x, rect.y, rect.width - 1, rect.height);
+ gc.drawRectangle(rect.x + 1, rect.y, rect.width - 3, rect.height);
+ }
+
+ // draw image
+ Image img = NScreenUtil.getScreenImage(model);
+ if (img != null) {
+ Rectangle imgRect = img.getBounds();
+ int yPosition = rect.y + (rect.height - imgRect.height) / 2;
+ gc.drawImage(img, rect.x + X_MARGIN, yPosition);
+ }
+ Font font = gc.getFont();
+ gc.setForeground(checkForegroundColor(canvas, state, isSelected, isEnabled));
+ setContents(canvas, model, gc);
+ gc.setFont(font);
+ }
+
+ private Color checkBackgroundColor(Canvas canvas, int state, boolean selected, boolean enabled) {
+ Color color = null;
+ switch (state) {
+ case STATE_NORMAL:
+ if (selected) {
+ if (enabled) {
+ // selected - enable
+ color = ColorResource.NSE_BG;
+ } else {
+ // selected - disable
+ color = ColorResource.NSD_BG;
+ }
+ } else {
+ if (enabled) {
+ // normal - enable
+ color = ColorResource.NNE_BG;
+ } else {
+ // normal - disable
+ color = ColorResource.NND_BG;
+ }
+ }
+ break;
+ case STATE_HOVER:
+ if (selected) {
+ if (enabled) {
+ // hover selected enabled
+ color = ColorResource.HSE_BG;
+ } else {
+ // hover selected disabled
+ color = ColorResource.HSD_BG;
+ }
+ } else {
+ if (enabled) {
+ // hover normal enabled
+ color = ColorResource.HNE_BG;
+ } else {
+ // hover normal disabled
+ color = ColorResource.HND_BG;
+ }
+ }
+ break;
+ case STATE_PUSH:
+ if (selected) {
+ if (enabled) {
+ // pushed selected enabled
+ color = ColorResource.PSE_BG;
+ } else {
+ // pushed selected disabled
+ color = ColorResource.PSD_BG;
+ }
+ } else {
+ if (enabled) {
+ // pushed normal enabled
+ color = ColorResource.PNE_BG;
+ } else {
+ // pushed normal disabled
+ color = ColorResource.PND_BG;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return color;
+ }
+
+ private Color checkForegroundColor(Canvas canvas, int state, boolean selected, boolean enabled) {
+ Color color = null;
+ switch (state) {
+ case STATE_NORMAL:
+ if (selected) {
+ if (enabled) {
+ // selected - enable
+ color = ColorResource.NSE_FG;
+ } else {
+ // selected - disable
+ color = ColorResource.NSD_FG;
+ }
+ } else {
+ if (enabled) {
+ // normal - enable
+ color = ColorResource.NNE_FG;
+ } else {
+ // normal - disable
+ color = ColorResource.NND_FG;
+ }
+ }
+ break;
+ case STATE_HOVER:
+ if (selected) {
+ if (enabled) {
+ // hover selected enabled
+ color = ColorResource.HSE_FG;
+ } else {
+ // hover selected disabled
+ color = ColorResource.HSD_FG;
+ }
+ } else {
+ if (enabled) {
+ // hover normal enabled
+ color = ColorResource.HNE_FG;
+ } else {
+ // hover normal disabled
+ color = ColorResource.HND_FG;
+ }
+ }
+ break;
+ case STATE_PUSH:
+ if (selected) {
+ if (enabled) {
+ // pushed selected enabled
+ color = ColorResource.PSE_FG;
+ } else {
+ // pushed selected disabled
+ color = ColorResource.PSD_FG;
+ }
+ } else {
+ if (enabled) {
+ // pushed normal enabled
+ color = ColorResource.PNE_FG;
+ } else {
+ // pushed normal disabled
+ color = ColorResource.PND_FG;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return color;
+ }
+
+ private Font getGroupFont(NScreenModel model) {
+ Font font = null;
+ NScreenType type = model.getType();
+ if (type == NScreenType.COMMON) {
+ font = FontUtil.COMMON;
+ } else if (type == NScreenType.ORIENTATION) {
+ font = FontUtil.ORIENTATION;
+ } else if (type == NScreenType.PIXELRATIO) {
+ font = FontUtil.PIXELRATIO;
+ } else if (type == NScreenType.RESOLUTION) {
+ font = FontUtil.DEVICE;
+ } else {
+ font = FontUtil.DEVICE;
+ }
+
+ return font;
+ }
+
+ private void setContents(Canvas canvas, NScreenModel model, GC gc) {
+ // int targetY = (canvas.getClientArea().height - IMAGE_SIZE) / 2;
+ Rectangle rect = canvas.getClientArea();
+ NScreenType type = model.getType();
+ if (type == NScreenType.COMMON || type == NScreenType.ORIENTATION
+ || type == NScreenType.PIXELRATIO) {
+ gc.setFont(getGroupFont(model));
+ String content = model.getName();
+ Point textWH = FontUtil.getTextArea(content, gc);
+ int x = rect.x + (rect.width - textWH.x) / 2;
+ int y = rect.y + (rect.height - textWH.y) / 2;
+ gc.drawText(content, x, y, true);
+ } else if (type == NScreenType.RESOLUTION) {
+ gc.setFont(getGroupFont(model));
+ String content1 = model.getName();
+ // String content2 =
+ // NScreenUtil.getResolutionText(model.getDeviceWidth(), model.getDeviceHeight(),
+ // false)
+ // + " "
+ // + NScreenUtil.getRatioText(model.getDeviceWidth(),
+ // model.getDeviceHeight(), true);
+ Point content1WH = FontUtil.getTextArea(content1, gc);
+ // Point content2WH = FontUtil.getTextArea(content2, gc);
+ int x1 = rect.x + (rect.width - content1WH.x) / 2;
+ // int x2 = rect.x + (rect.width - content2WH.x) / 2;
+ // int y1 = rect.y + (rect.height - content1WH.y - content2WH.y) / 2;
+ int y1 = rect.y + (rect.height - content1WH.y) / 2;
+ // int y2 = y1 + content1WH.y;
+ gc.drawText(content1, x1, y1, true);
+ // gc.drawText(content2, x2, y2, true);
+ } else {
+
+ }
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+import org.eclipse.swt.graphics.Image;
+import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.NScreenType;
+import org.tizen.webuibuilder.model.nscreen.NScreenModel.Orientation;
+import org.tizen.webuibuilder.utility.ResourceManager;
+
+
+public class NScreenUtil {
+ public static boolean copyFile(String srcPath, String destPath) {
+ boolean success = false;
+ FileInputStream fi = null;
+ FileOutputStream fo = null;
+ try {
+ File src = new File(srcPath);
+ File dest = new File(destPath);
+ fi = new FileInputStream(src);
+ fo = new FileOutputStream(dest);
+ byte[] buffer = new byte[1024];
+ int readCount = 0;
+ while ((readCount = fi.read(buffer)) != -1) {
+ fo.write(buffer, 0, readCount);
+ }
+ success = true;
+ } catch (NullPointerException e) {
+ e.printStackTrace();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ tryClose(fi, fo);
+ }
+ return success;
+ }
+
+ public static void tryClose(final Object... closeables) {
+ if (null == closeables) {
+ return;
+ }
+
+ for (Object obj : closeables) {
+ if (null == obj) {
+ continue;
+ }
+ try {
+ if (obj instanceof Closeable) {
+ ((Closeable) obj).close();
+ } else if (obj instanceof Socket) {
+ ((Socket) obj).close();
+ } else if (obj instanceof ServerSocket) {
+ ((ServerSocket) obj).close();
+ }
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static String getResolutionText(int width, int height, boolean brace) {
+ StringBuffer buffer = new StringBuffer();
+ if (brace) {
+ buffer.append("(");
+ }
+ buffer.append(width).append("x").append(height);
+ if (brace) {
+ buffer.append(")");
+ }
+ return buffer.toString();
+ }
+
+ public static int getGCD(int a, int b) {
+ int i, j;
+ int gcd = 0;
+
+ if (a == b) {
+ return a;
+ }
+ j = (a < b) ? a : b;
+
+ for (i = 1; i < j; i++) {
+ if (a % i == 0 && b % i == 0) {
+ gcd = i;
+ }
+ }
+ return gcd;
+ }
+
+ public static int getLCM(int a, int b) {
+ int i, j;
+ int lcm = 0;
+
+ j = (a > b) ? a : b;
+
+ for (i = j;; i++) {
+ if (i % a == 0 && i % b == 0) {
+ lcm = i;
+ break;
+ }
+ }
+ return lcm;
+ }
+
+ public static String getRatioText(int a, int b, boolean brace) {
+ int gcd = getGCD(a, b);
+ int aValue = a / gcd;
+ int bValue = b / gcd;
+
+ StringBuffer buffer = new StringBuffer();
+ if (brace) {
+ buffer.append("(");
+ }
+ buffer.append(Integer.toString(aValue)).append("x").append(Integer.toString(bValue));
+ if (brace) {
+ buffer.append(")");
+ }
+ return buffer.toString();
+ }
+
+ public static Image getScreenImage(NScreenModel model) {
+ String imgName = null;
+ if (model.getType() == NScreenType.COMMON) {
+ imgName = "common.png";
+ } else if (model.getType() == NScreenType.ORIENTATION) {
+ if (model.getOrientation() == Orientation.LANDSCAPE) {
+ imgName = "orientation-landscape.png";
+ } else {
+ imgName = "orientation-portrait.png";
+ }
+ } else if (model.getType() == NScreenType.PIXELRATIO) {
+ if (model.getDevicePixelRatio() == 1.0) {
+ imgName = "pixel-ratio10.png";
+ } else if (model.getDevicePixelRatio() == 1.5) {
+ imgName = "pixel-ratio15.png";
+ } else if (model.getDevicePixelRatio() == 2.0) {
+ imgName = "pixel-ratio20.png";
+ } else if (model.getDevicePixelRatio() == 3.0) {
+ imgName = "pixel-ratio30.png";
+ }
+ } else if (model.getType() == NScreenType.RESOLUTION) {
+ String resolution =
+ getRatioText(model.getDeviceWidth(), model.getDeviceHeight(), false);
+ if (resolution.equals("1x1")) {
+ imgName = "resoluion-1-1.png";
+ } else if (resolution.equals("2x3")) {
+ imgName = "resoluion-2-3.png";
+ } else if (resolution.equals("3x2")) {
+ imgName = "resoluion-3-2.png";
+ } else if (resolution.equals("3x4")) {
+ imgName = "resoluion-3-4.png";
+ } else if (resolution.equals("3x5")) {
+ imgName = "resoluion-3-5.png";
+ } else if (resolution.equals("4x3")) {
+ imgName = "resoluion-4-3.png";
+ } else if (resolution.equals("4x5")) {
+ imgName = "resoluion-4-5.png";
+ } else if (resolution.equals("5x3")) {
+ imgName = "resoluion-5-3.png";
+ } else if (resolution.equals("5x4")) {
+ imgName = "resoluion-5-4.png";
+ } else if (resolution.equals("9x16")) {
+ imgName = "resoluion-9-16.png";
+ } else if (resolution.equals("5x8") || resolution.equals("39x62")) {
+ imgName = "resoluion-10-16.png";
+ } else if (resolution.equals("16x9")) {
+ imgName = "resoluion-16-9.png";
+ } else if (resolution.equals("8x5") || resolution.equals("62x39")) {
+ imgName = "resoluion-16-10.png";
+ }
+ } else // custom
+ {
+ imgName = model.getImageName();
+ }
+
+ if (null != imgName) {
+ return ResourceManager.getImage(BuilderConstants.ICON_DIR, imgName);
+ }
+ return null;
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenGroup;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+
+public class NScreenDisableCommand extends Command {
+ private NScreenItem item = null;
+ private NScreenGroup group = null;
+
+ public NScreenDisableCommand(NScreenItem item) {
+ this.item = item;
+ group = (NScreenGroup) item.getParent();
+ }
+
+ @Override
+ public void execute() {
+ String pageId = group.getNScreenPageModel().getPageData().getName();
+
+ if (item.isLinked() || item.isRoot()) {
+ List<NScreenItem> source = new ArrayList<NScreenItem>();
+ List<NScreenItem> target = new ArrayList<NScreenItem>();
+
+ source.add(item);
+ List<NScreenItem> links = group.getLinkedItems(item);
+ int sourceIndex = links.indexOf(item);
+
+ if (sourceIndex != 0 && sourceIndex != links.size() - 1) {
+
+ for (int i = sourceIndex + 1; i < links.size(); i++) {
+ target.add(links.get(i));
+ }
+
+ NScreenItem prev = null;
+ NScreenItem after = null;
+
+ int sourceFirstIndex = group.getItems().indexOf(source.get(0));
+ if (sourceFirstIndex != 0) {
+ prev = group.getItems().get(sourceFirstIndex - 1);
+ }
+
+ int targetLastIndex = group.getItems().indexOf(target.get(target.size() - 1));
+ if (targetLastIndex < group.getItems().size() - 1) {
+ after = group.getItems().get(targetLastIndex + 1);
+ }
+
+ group.changeOrder(prev, source, target, after);
+ group.changeItemIndex(source, target);
+ group.changeModelIndex(source, target);
+ }
+
+ if (!item.isRoot()) {
+ item.getReference().getLinkedList().remove(item);
+ item.getReference().redrawItem();
+ }
+
+ if (item.isRoot()) {
+ List<NScreenItem> linkeds = item.getLinkedList();
+ NScreenItem newRoot = linkeds.get(0);
+ newRoot.setLink(SWT.NONE);
+ newRoot.copyFile(item);
+ List<NScreenItem> newLinks = new ArrayList<NScreenItem>();
+ newLinks.addAll(linkeds);
+ item.getLinkedList().clear();
+ newRoot.getLinkedList().addAll(newLinks);
+ for (NScreenItem link : newLinks) {
+ link.setReference(newRoot);
+ }
+ newRoot.redrawItem();
+ }
+ }
+ item.deleteFile();
+ item.setItemEnabled(false);
+ item.getModel().addDisablePage(pageId);
+ item.redrawItem();
+ }
+
+ @Override
+ public void redo() {
+ // execute();
+ }
+
+ @Override
+ public void undo() {
+
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.gef.commands.Command;
+import org.tizen.webuibuilder.model.css.CssFile;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenGroup;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+
+public class NScreenEnableCommand extends Command {
+
+ private NScreenItem item = null;
+ private NScreenGroup group = null;
+
+ public NScreenEnableCommand(NScreenItem nscreenItem) {
+ item = nscreenItem;
+ group = (NScreenGroup) item.getParent();
+ }
+
+ @Override
+ public void execute() {
+// String filePath = group.getNScreenPageModel().getAppManager().getCssFolder();
+// CssFile cssFile = new CssFile(filePath + IPath.SEPARATOR + item.getFileName());
+// File newCSSFile = new File(filePath + IPath.SEPARATOR + item.getFileName());
+//
+// try {
+// if (!newCSSFile.exists()) {
+// File dir = newCSSFile.getParentFile();
+// dir.mkdirs();
+// newCSSFile.createNewFile();
+// }
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+//
+// group.getNScreenPageModel().getPageData().addCssFile(cssFile);
+ item.createFile();
+ item.setItemEnabled(true);
+
+// String pageId = group.getNScreenPageModel().getPageData().getName();
+// item.getModel().addEnablePage(pageId);
+ }
+
+ @Override
+ public void redo() {
+// execute();
+ }
+
+ @Override
+ public void undo() {
+// String filePath = group.getNScreenPageModel().getAppManager().getCssFolder();
+// CssFile cssFile = new CssFile(filePath + IPath.SEPARATOR + item.getFileName());
+// File newCSSFile = new File(filePath + IPath.SEPARATOR + item.getFileName());
+//
+// if (newCSSFile.exists()) {
+// newCSSFile.delete();
+// }
+//
+// group.getNScreenPageModel().getPageData().removeCssFile(cssFile);
+// item.setEnabled(false);
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenGroup;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+
+public class NScreenLinkCutCommand extends Command {
+ private NScreenItem item = null;
+ private NScreenGroup group = null;
+ private int direction = 0;
+
+ public NScreenLinkCutCommand(NScreenItem item) {
+ this.item = item;
+ group = (NScreenGroup) item.getParent();
+ }
+
+ @Override
+ public void execute() {
+
+ List<NScreenItem> source = new ArrayList<NScreenItem>();
+ List<NScreenItem> target = new ArrayList<NScreenItem>();
+
+ source.add(item);
+ List<NScreenItem> links = group.getLinkedItems(item);
+ int sourceIndex = links.indexOf(item);
+
+ if (sourceIndex != 0 && sourceIndex != links.size() - 1) {
+
+ for (int i = sourceIndex + 1; i < links.size(); i++) {
+ target.add(links.get(i));
+ }
+
+ NScreenItem prev = null;
+ NScreenItem after = null;
+
+ int sourceFirstIndex = group.getItems().indexOf(source.get(0));
+ if (sourceFirstIndex != 0) {
+ prev = group.getItems().get(sourceFirstIndex - 1);
+ }
+
+ int targetLastIndex = group.getItems().indexOf(target.get(target.size() - 1));
+ if (targetLastIndex < group.getItems().size() - 1) {
+ after = group.getItems().get(targetLastIndex + 1);
+ }
+
+ group.changeOrder(prev, source, target, after);
+ group.changeItemIndex(source, target);
+ group.changeModelIndex(source, target);
+ }
+
+ item.getReference().getLinkedList().remove(item);
+ item.getReference().redrawItem();
+
+ direction = item.setLink(SWT.NONE);
+ item.createFile();
+ }
+
+ @Override
+ public void redo() {
+ execute();
+ }
+
+ @Override
+ public void undo() {
+// item.deleteFile();
+// item.setLink(direction);
+ }
+}
--- /dev/null
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+public class NScreenLinkDownCommand extends Command {
+ private NScreenItem item = null;
+
+ public NScreenLinkDownCommand(NScreenItem item) {
+ this.item = item;
+ }
+
+ @Override
+ public void execute() {
+ item.deleteFile();
+ item.setLink(SWT.DOWN);
+ }
+
+ @Override
+ public void redo() {
+ execute();
+ }
+
+ @Override
+ public void undo() {
+ item.setLink(SWT.NONE);
+ item.createFile();
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+
+public class NScreenLinkUpCommand extends Command {
+ private NScreenItem item = null;
+
+ public NScreenLinkUpCommand(NScreenItem item) {
+ this.item = item;
+ }
+
+ @Override
+ public void execute() {
+ item.deleteFile();
+ item.setLink(SWT.UP);
+ }
+
+ @Override
+ public void redo() {
+ execute();
+ }
+
+ @Override
+ public void undo() {
+ item.setLink(SWT.NONE);
+ item.createFile();
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenGroup;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+
+public class NScreenMoveDownCommand extends Command {
+ private NScreenItem item = null;
+
+ public NScreenMoveDownCommand(NScreenItem item) {
+ this.item = item;
+ }
+
+ @Override
+ public void execute() {
+ NScreenGroup group = (NScreenGroup) item.getParent();
+ // group.changeOrder(item, SWT.DOWN);
+
+ List<NScreenItem> source = new ArrayList<NScreenItem>();
+ List<NScreenItem> target = new ArrayList<NScreenItem>();
+
+ if (item.isLinked() || item.isRoot()) {
+ source = group.getLinkedItems(item);
+ } else {
+ source.add(item);
+ }
+
+ int index = group.getItems().indexOf(source.get(source.size() - 1));
+
+ if (index == group.getItems().size() - 1) {
+ return;
+ }
+
+ NScreenItem next = group.getItems().get(index + 1);
+
+ if (next.isLinked() || next.isRoot()) {
+ target = group.getLinkedItems(next);
+ } else {
+ target.add(next);
+ }
+
+ NScreenItem prev = null;
+ NScreenItem after = null;
+
+ int sourceFirstIndex = group.getItems().indexOf(source.get(0));
+ if (sourceFirstIndex != 0) {
+ prev = group.getItems().get(sourceFirstIndex - 1);
+ }
+
+ int targetLastIndex = group.getItems().indexOf(target.get(target.size()-1));
+ if (targetLastIndex < group.getItems().size() - 1) {
+ after = group.getItems().get(targetLastIndex + 1);
+ }
+
+ group.changeOrder(prev, source, target, after);
+ group.changeItemIndex(source, target);
+ group.changeModelIndex(source, target);
+ }
+
+ @Override
+ public void redo() {
+ execute();
+ }
+
+ @Override
+ public void undo() {
+// NScreenGroup group = (NScreenGroup) item.getParent();
+// group.changeOrder(item, SWT.UP);
+ }
+}
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenGroup;
+import org.tizen.webuibuilder.ui.views.nscreen.NScreenItem;
+
+
+public class NScreenMoveUpCommand extends Command {
+ private NScreenItem item = null;
+
+ public NScreenMoveUpCommand(NScreenItem item) {
+ this.item = item;
+ }
+
+ @Override
+ public void execute() {
+ NScreenGroup group = (NScreenGroup) item.getParent();
+// group.changeOrder(item, SWT.UP);
+
+ List<NScreenItem> source = new ArrayList<NScreenItem>();
+ List<NScreenItem> target = new ArrayList<NScreenItem>();
+
+ if (item.isLinked() || item.isRoot()) {
+ target = group.getLinkedItems(item);
+ } else {
+ target.add(item);
+ }
+
+ int index = group.getItems().indexOf(target.get(0));
+
+ if (index == 0) {
+ return;
+ }
+
+ NScreenItem front = group.getItems().get(index - 1);
+
+ if (front.isLinked() || front.isRoot()) {
+ source = group.getLinkedItems(front);
+ } else {
+ source.add(front);
+ }
+
+ NScreenItem prev = null;
+ NScreenItem after = null;
+
+ int sourceFirstIndex = group.getItems().indexOf(source.get(0));
+ if (sourceFirstIndex != 0) {
+ prev = group.getItems().get(sourceFirstIndex - 1);
+ }
+
+ int targetLastIndex = group.getItems().indexOf(target.get(target.size()-1));
+ if (targetLastIndex < group.getItems().size() - 1) {
+ after = group.getItems().get(targetLastIndex + 1);
+ }
+
+ group.changeOrder(prev, source, target, after);
+ group.changeItemIndex(source, target);
+ group.changeModelIndex(source, target);
+ }
+
+ @Override
+ public void redo() {
+ execute();
+ }
+
+ @Override
+ public void undo() {
+// NScreenGroup group = (NScreenGroup) item.getParent();
+// group.changeOrder(item, SWT.DOWN);
+ }
+}
}
mRootPathUri = mIProject.getLocationURI().toString();
mToolPathUri = ResourceManager.getFileURL(BuilderPlugin.PLUGIN_ID, null).toString();
-
}
public IProject getIProject() {
--- /dev/null
+
+
+package org.tizen.webuibuilder.ui.views.nscreen;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+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.eclipse.swt.widgets.Shell;
+
+
+public class testcode {
+
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ Composite composite = new Composite(shell, SWT.BORDER);
+ composite.addListener(SWT.MouseDown | SWT.MouseUp, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ System.out.println("mouse up/down");
+
+ }
+ });
+ Rectangle clientArea = shell.getClientArea();
+ composite.setBounds(clientArea.x, clientArea.y, 100, 100);
+ Menu menu = new Menu(shell, SWT.POP_UP);
+ MenuItem item1 = new MenuItem(menu, SWT.PUSH);
+ item1.setText("test");
+ composite.setMenu(menu);
+ shell.setMenu(menu);
+ shell.setSize(300, 300);
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch())
+ display.sleep();
+ }
+ display.dispose();
+ }
+}
}
private boolean setSelector(String selectorName) {
- if (currentSelector != null && currentSelector.getSelectorName().equals(selectorName)) {
- return false;
- }
-
CssSelector cssSelector = cssFile.getSelector(selectorName);
if (cssSelector != null) {