Package com.vk.gwt.designer.client.designer

Source Code of com.vk.gwt.designer.client.designer.VkMenu

/*
* Copyright 2011 Gaurav Saxena < gsaxena81 AT gmail.com >
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vk.gwt.designer.client.designer;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
import com.google.gwt.user.client.ui.Hidden;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.vk.gwt.designer.client.api.component.IVkPanel;
import com.vk.gwt.designer.client.api.component.IVkWidget;
import com.vk.gwt.designer.client.api.engine.IEngine;
import com.vk.gwt.designer.client.api.engine.IWidgetEngine;
import com.vk.gwt.designer.client.designer.TableSizeChooserMenuItem.IAddTableCommand;
import com.vk.gwt.designer.client.ui.widget.table.vkFlextable.VkFlexTable;
import com.vk.gwt.designer.client.ui.widget.table.vkGrid.VkGrid;

public class VkMenu extends Composite implements IVkMenu{
  private FlowPanel menuBarPanel = new FlowPanel();
  private MenuBar menuBar;
  private Widget invokingWidget;
  private MenuItem selectedMenuItem;
  private IWidgetEngine<? extends Widget> widgetEngine;
  private TabPanel styleTabPanel;
  private Command copyCommand;
  private Command undoCommand;
  private Command redoCommand;
  private Command cutCommand;
  private Command copyStyleCommand;
  private Command saveCommand;
  private Command loadCommand;
  private MenuItem undoItem;
  private MenuItem redoItem;
  private Widget lastSelectedWidget;
  private Command clearCommand;
  private MenuBar ancestorMeuBar;
  private Command downLoadCommand;
  private Command openCommand;
  private Command pasteCommand;
  private Command pasteStyleCommand;
  private Command removeCommand;
  private Command moveCommand;
  /*private Command moveRightCommand;
  private Command moveLeftCommand;
  private Command moveUpCommand;
  private Command moveDownCommand;*/
  private Command resizeCommand;
  /*private Command resizeRightCommand;
  private Command resizeLeftCommand;
  private Command resizeUpCommand;
  private Command resizeDownCommand;*/
 
 
  public VkMenu() {
    this(false);
  }
  private VkMenu(boolean isMenu) {
    menuBarPanel.clear();
    initWidget(menuBarPanel);
    menuBar = new MenuBar(isMenu);
    menuBarPanel.add(menuBar);
    menuBar.setAnimationEnabled(true);
    menuBar.sinkEvents(Event.ONCLICK | Event.ONMOUSEOVER | Event.ONMOUSEOUT | Event.ONFOCUS | Event.ONKEYDOWN | Event.ONBLUR);
    menuBar.setStyleName("vkgwtdesigner-vertical-menu");
    DOM.setStyleAttribute(menuBar.getElement(), "padding", "3px 0 3px 0");
    //menuBar.getElement().getStyle().setFloat(Float.LEFT);//not working if done as DOM.setStyleAttribute
    menuBarPanel.add(StyleToolbar.getInstance());
    ancestorMeuBar = new MenuBar();
    ancestorMeuBar.setHeight("16px");
    menuBarPanel.add(ancestorMeuBar);
    ancestorMeuBar.setStyleName("vkgwtdesigner-vertical-menu");
  }
  public void prepareMenu(IVkWidget invokingWidget) {
    if(invokingWidget.showMenu()) {
      initializeMenu(invokingWidget);
      menuBar.clearItems();
      menuBar.addItem("File", getFileItems());
      menuBar.addItem("Edit", getEditItems(widgetEngine.getOperationsList((Widget) invokingWidget)));
      List<String> widgetsList = VkStateHelper.getInstance().getEngine().getWidgetsList((Widget) invokingWidget);
      MenuBar widgetsMenu = getWidgetsList(widgetsList);
      menuBar.addItem("Widgets", widgetsMenu).setEnabled(widgetsList != null && !widgetsList.isEmpty());
      List<String> panelsList = VkStateHelper.getInstance().getEngine().getPanelsList(invokingWidget);
      MenuBar panelsMenu = getPanelsList(panelsList);
      menuBar.addItem("Panels", panelsMenu).setEnabled(panelsList != null && !panelsList.isEmpty());
      List<String> attributeList = VkStateHelper.getInstance().getWidgetEngineMapping().getEngineMap().get(invokingWidget.getWidgetName()).getAttributesList((Widget) invokingWidget);
      if(attributeList != null)
        menuBar.addItem("Attributes", getAttributesMenu(attributeList));
      else
        menuBar.addItem("Attributes", getAttributesMenu(new ArrayList<String>())).setEnabled(false);
      StyleToolbar.getInstance().setWidget((Widget) invokingWidget);
      VkStateHelper.getInstance().getKeyBoardHelper().setWidget(invokingWidget);
      refreshUndoRedo();
      menuBar.closeAllChildren(false);
      addAncestorMenu();
    }
  }
  private void addAncestorMenu() {
    ancestorMeuBar.clearItems();
    IVkWidget node = ((IVkWidget) invokingWidget);
    while (node instanceof IVkWidget) {
      final Widget currentWidget = (Widget) node;
      ancestorMeuBar.addItem(((IVkWidget)node).getWidgetName() + (node.getVkParent() != null ? " >" : ""), new Command(){
        @Override
        public void execute() {
          prepareMenu((IVkWidget)currentWidget);
          VkStateHelper.getInstance().getToolbarHelper().showToolbar(currentWidget);
        }});
      node = ((IVkWidget)node).getVkParent();
    }
  }
  private void initializeMenu(IVkWidget widget) {
    if(this.invokingWidget != null && VkStateHelper.getInstance().isDesignerMode()) {
      this.invokingWidget.removeStyleName("vk-selectedWidget");
      ((Widget) invokingWidget).getElement().getStyle().clearZIndex();
    }
    lastSelectedWidget = invokingWidget;
    invokingWidget = (Widget)widget;
    if(VkStateHelper.getInstance().isDesignerMode() && !((Widget) invokingWidget).getElement().getId().equals("drawingPanel"))  {
      this.invokingWidget.addStyleName("vk-selectedWidget");
      DOM.setStyleAttribute(invokingWidget.getElement(), "zIndex", "1");
    }
    this.widgetEngine = VkStateHelper.getInstance().getWidgetEngineMapping().getEngineMap().get(widget.getWidgetName());
    refreshStylePanelValues();
  }
  public final boolean isLastSelectedWidget(Widget w) {
    return lastSelectedWidget == w;
  }
  private void refreshStylePanelValues() {
    if(styleTabPanel != null) {
      NodeList<Element> inputList = styleTabPanel.getElement().getElementsByTagName("INPUT");
      for(int i = 0; i < inputList.getLength(); i++) {
        String attributeName = DOM.getElementAttribute(
          (com.google.gwt.user.client.Element) inputList.getItem(i), "attributeName");
        String styleAttribute = DOM.getStyleAttribute(invokingWidget.getElement(), attributeName);
        if(!attributeName.trim().isEmpty())
          DOM.setElementProperty((com.google.gwt.user.client.Element) inputList.getItem(i), "value"
              , styleAttribute);
      }
    }
  }
  private void addPreviewMenuItem(MenuBar operationsMenu) {
    operationsMenu.addItem("Preview", new Command() {
      @Override
      public void execute() {
        VkDesignerUtil.setLoadString(VkStateHelper.getInstance().getWidgetEngineMapping().getEngineMap().get(VkMainDrawingPanel.getInstance().getWidgetName()).serialize((IVkWidget) VkMainDrawingPanel.getInstance()));
        String href = Window.Location.getHref();
        if(Window.Location.getParameterMap().size() == 0)
          href += "?isDesignerMode=false";
        else
          href += "&isDesignerMode=false";
        Window.open(href, "_blank", Window.Navigator.getUserAgent().indexOf("IE") > -1 ? "fullscreen=1" : null);
      }
    });
  }
  private void refreshUndoRedo() {
    undoItem.setEnabled(!UndoHelper.getInstance().isUndoStackEmpty());
    redoItem.setEnabled(!UndoHelper.getInstance().isRedoStackEmpty());
  }
  Command getRedoCommand() {
    return redoCommand = redoCommand != null ? redoCommand : new Command(){
      @Override
      public void execute() {
        UndoHelper.getInstance().redo();
        refreshUndoRedo();
      }};
  }
  Command getUndoCommand() {
    return undoCommand = undoCommand != null ? undoCommand : new Command(){
      @Override
      public void execute() {
        UndoHelper.getInstance().undo();
        refreshUndoRedo();
      }};
  }
  private MenuBar getAttributesMenu(List<String> attributeList) {
      MenuBar attributesMenu = new MenuBar(true){
        @Override
        public void selectItem(MenuItem item) {
          super.selectItem(item);
          selectedMenuItem = item;
        }
      };
      attributesMenu.setStyleName("vkgwtdesigner-vertical-menu");
      attributesMenu.setFocusOnHoverEnabled(false);
      Command attributeClickedCommand = new Command() {
        @Override
        public void execute() {
        //prepareMenu(widget);
          widgetEngine.applyAttribute(selectedMenuItem.getText(), invokingWidget);
        }
      };
      for (String attribute : attributeList)
        attributesMenu.addItem(attribute, attributeClickedCommand);
    return attributesMenu;
  }
  private MenuBar getWidgetsList(List<String> widgetsList) {
    MenuBar widgetsMenu = new MenuBar(true) {
      private TableSizeChooserMenuItem tableSizeChooserMenuItem;
      @Override
      public void selectItem(MenuItem item) {
        super.selectItem(item);
        selectedMenuItem = item;
      }
      private MenuItem findItem(com.google.gwt.user.client.Element hItem) {
          for (MenuItem item : super.getItems()) {
            if (DOM.isOrHasChild(item.getElement(), hItem)) {
              return item;
            }
          }
          return null;
      }
      @Override
      public void onDetach(){
        super.onDetach();
        if(tableSizeChooserMenuItem != null)
          tableSizeChooserMenuItem.hide();
      }
      @Override
      public void onBrowserEvent(Event event) {
        MenuItem item = findItem(DOM.eventGetTarget(event));
        switch (DOM.eventGetType(event)) {
          case Event.ONMOUSEOVER: {
            if (item != null) {
              if(tableSizeChooserMenuItem != null && !item.equals(tableSizeChooserMenuItem)) {
                tableSizeChooserMenuItem.hide();
                    super.closeAllChildren(true);
                    tableSizeChooserMenuItem = null;
                  }
                  if (item instanceof TableSizeChooserMenuItem) {
                    tableSizeChooserMenuItem = (TableSizeChooserMenuItem)item;
                    super.selectItem(item);
                    tableSizeChooserMenuItem.show();
                  }
                  super.onBrowserEvent(event);
            }
                break;
            }
          default :
            super.onBrowserEvent(event);
          }
      }
    };
    if(widgetsList != null && widgetsList.size() > 0) {
      widgetsMenu.setStyleName("vkgwtdesigner-vertical-menu");
      widgetsMenu.setFocusOnHoverEnabled(false);
      String tables = VkGrid.NAME +  "|" + VkFlexTable.NAME;
      for (String widgetName : widgetsList) {
        if(widgetName.matches(tables))
          widgetsMenu.addItem(getTableSizeChooser(widgetName));
        else
          widgetsMenu.addItem(widgetName, getWidgetClickedCommand());
      }
    }
    return widgetsMenu;
  }
 
  private TableSizeChooserMenuItem getTableSizeChooser(String widgetName) {
    return new TableSizeChooserMenuItem(widgetName, new IAddTableCommand() {
      @Override
      public void addTable(final Widget table) {
        UndoHelper.getInstance().doCommand(new Command(){
          @Override
          public void execute() {
            VkStateHelper.getInstance().getEngine().addWidget(table, (IVkPanel)invokingWidget);
          }}, new Command(){
              @Override
              public void execute() {
                table.removeFromParent();
              }});
        new Timer(){
          @Override
          public void run() {
            VkStateHelper.getInstance().getMoveHelper().makeMovable((IVkWidget) table);
          }}.schedule(100);
      }
    });
  }
  private MenuBar getPanelsList(List<String> panelsList) {
    MenuBar panelsMenu = new MenuBar(true){
      @Override
      public void selectItem(MenuItem item) {
        super.selectItem(item);
        selectedMenuItem = item;
      }
    };
    if(panelsList != null && !panelsList.isEmpty()) {
      panelsMenu.setStyleName("vkgwtdesigner-vertical-menu");
      panelsMenu.setFocusOnHoverEnabled(false);
      for (String widgetName : panelsList)
        panelsMenu.addItem(widgetName, getWidgetClickedCommand());
    }
    return panelsMenu;
  }

  private Command getWidgetClickedCommand() {
    return new Command() {
      @Override
      public void execute() {
        VkStateHelper.getInstance().getEngine().addWidget(selectedMenuItem.getText(), (IVkPanel)invokingWidget);
      };
    };
  }
  private MenuBar getFileItems() {
    MenuBar operationsMenu = new MenuBar(true);
    DOM.setStyleAttribute(operationsMenu.getElement(), "zIndex", Integer.toString(Integer.MAX_VALUE));
    operationsMenu.setFocusOnHoverEnabled(false);
    operationsMenu.setStyleName("vkgwtdesigner-vertical-menu");
    operationsMenu.addItem(IEngine.NEW, getClearCommand());
    operationsMenu.addItem(IEngine.OPEN, getOpenMenu());
    operationsMenu.addItem(IEngine.SAVE_AS, getSaveAsMenu());
    operationsMenu.addItem(IEngine.CLEAR, getClearCommand());
    addPreviewMenuItem(operationsMenu);
    return operationsMenu;
 
  private MenuBar getEditItems(List<String> operationsList) {
    MenuBar editMenu = new MenuBar(true);
    DOM.setStyleAttribute(editMenu.getElement(), "zIndex", Integer.toString(Integer.MAX_VALUE));
    editMenu.setFocusOnHoverEnabled(false);
    editMenu.setStyleName("vkgwtdesigner-vertical-menu");
    undoItem = editMenu.addItem("Undo(Ctrl+Z)", getUndoCommand());
    redoItem = editMenu.addItem("Redo(Ctrl+Y)", getRedoCommand());
    refreshUndoRedo();
    editMenu.addItem(IEngine.CUT + "(Ctrl+X)", getCutCommand()).setEnabled(operationsList.indexOf(IEngine.CUT) > -1);
    editMenu.addItem(IEngine.COPY + "(Ctrl+C)", getCopyCommand()).setEnabled(operationsList.indexOf(IEngine.COPY) > -1);
    editMenu.addItem(IEngine.PASTE + "(Ctrl+V)", getPasteCommand()).setEnabled(operationsList.indexOf(IEngine.PASTE) > -1 && VkStateHelper.getInstance().getClipBoardHelper().isPasteWidgetPossible());
    editMenu.addItem(IEngine.COPY_STYLE + "(Ctrl+Shift+C)", getCopyStyleCommand()).setEnabled(operationsList.indexOf(IEngine.COPY_STYLE) > -1);;
    editMenu.addItem(IEngine.PASTE_STYLE + "(Ctrl+Shift+V)", getPasteStyleCommand()).setEnabled(operationsList.indexOf(IEngine.PASTE_STYLE) > -1
      && VkStateHelper.getInstance().getClipBoardHelper().isPasteStylePossible());
    boolean isMoveEnabled = operationsList.indexOf(IEngine.MOVE) > -1;
    editMenu.addItem(IEngine.MOVE, getMoveCommand()).setEnabled(isMoveEnabled);
    /*editMenu.addItem(IEngine.MOVE + "-Right(Right arrow)", getMoveRightCommand()).setEnabled(isMoveEnabled);
    editMenu.addItem(IEngine.MOVE + "-Left(Left arrow)", getMoveLeftCommand()).setEnabled(isMoveEnabled);
    editMenu.addItem(IEngine.MOVE + "-Up(Up arrow)", getMoveUpCommand()).setEnabled(isMoveEnabled);
    editMenu.addItem(IEngine.MOVE + "-Down(Down arrow)", getMoveDownCommand()).setEnabled(isMoveEnabled);*/
    boolean isResizeEnabled = operationsList.indexOf(IEngine.RESIZE) > -1;   
    editMenu.addItem(IEngine.RESIZE , getResizeCommand()).setEnabled(isResizeEnabled);
    /*editMenu.addItem(IEngine.RESIZE + "-Right(Ctrl + Right arrow)", getResizeRightCommand()).setEnabled(isResizeEnabled);
    editMenu.addItem(IEngine.RESIZE + "-Left(Ctrl + Left arrow)", getResizeLeftCommand()).setEnabled(isResizeEnabled);
    editMenu.addItem(IEngine.RESIZE + "-Up(Ctrl + Up arrow)", getResizeUpCommand()).setEnabled(isResizeEnabled);
    editMenu.addItem(IEngine.RESIZE + "-Down(Ctrl + Down arrow)", getResizeDownCommand()).setEnabled(isResizeEnabled);*/
    MenuItem item = editMenu.addItem(IEngine.DELETE + "(Del)", getRemoveCommand());
    item.setEnabled(operationsList.indexOf(IEngine.DELETE) > -1);
    return editMenu;
 

  /*private Command getMoveDownCommand() {
    return moveDownCommand = moveDownCommand != null ? moveDownCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getMoveHelper().moveWidgetDown((IVkWidget) invokingWidget);
      }};
  }
  private Command getMoveUpCommand() {
    return moveUpCommand = moveUpCommand != null ? moveUpCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getMoveHelper().moveWidgetUp((IVkWidget) invokingWidget);
      }};
  }
  private Command getMoveLeftCommand() {
    return moveLeftCommand = moveLeftCommand != null ? moveLeftCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getMoveHelper().moveWidgetLeft((IVkWidget) invokingWidget);
      }};
  }*/
  private Command getMoveCommand() {
    return moveCommand = moveCommand != null ? moveCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getMoveHelper().makeMovable((IVkWidget) invokingWidget);
      }};
  }
  /*private Command getMoveRightCommand() {
    return moveRightCommand = moveRightCommand != null ? moveRightCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getMoveHelper().moveWidgetRight((IVkWidget) invokingWidget);
      }};
  }*/
  private Command getOpenUsingStringCommand() {
    return loadCommand = loadCommand != null ? loadCommand : new Command(){
      @Override
      public void execute() {
        final DialogBox loadDialog = new DialogBox();
        DOM.setStyleAttribute(loadDialog.getElement(), "zIndex", Integer.toString(Integer.MAX_VALUE));
        loadDialog.setText("Please paste the save string below to reproduce the application");
        VerticalPanel vp = new VerticalPanel();
        vp.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
        loadDialog.add(vp);
        final TextArea ta = new TextArea();
        vp.add(ta);
        ta.setPixelSize(500, 200);
        HorizontalPanel buttonsPanel = new HorizontalPanel();
        vp.add(buttonsPanel);
        buttonsPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
        Button ok = new Button("Render");
        buttonsPanel.add(ok);
        ok.addClickHandler(new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            VkStateHelper.getInstance().getLoadSaveHelper().loadApplication(ta.getText());
            loadDialog.hide();
          }
        });
        Button cancel = new Button("Cancel");
        buttonsPanel.add(cancel);
        cancel.addClickHandler(new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            loadDialog.hide();
          }
        });
        loadDialog.center();
      }
    };
  }
  private Command getDownloadCommand() {
    return downLoadCommand = downLoadCommand != null ? downLoadCommand : new Command(){
      @Override
      public void execute() {
        final FormPanel fp = new FormPanel();
        RootPanel.get().add(fp);
        fp.setAction("./vkgwtdesigner/vksync");
        fp.setMethod(FormPanel.METHOD_POST);
        fp.setEncoding(FormPanel.ENCODING_MULTIPART);
        final VerticalPanel dialog = new VerticalPanel();
        fp.setWidget(dialog);
        dialog.add(new Hidden("op", "downLoadLayoutFile"));
        dialog.add(new Hidden("downloadString", VkStateHelper.getInstance().getLoadSaveHelper().getSaveString()));
        fp.submit();
        fp.addSubmitCompleteHandler(new SubmitCompleteHandler() {
          @Override
          public void onSubmitComplete(SubmitCompleteEvent event) {
            new Timer() {
              @Override
              public void run() {
                fp.removeFromParent();
              }}.schedule(5000);
          }
        });
      }
    };
  }
  private Command getOpenUsingFileCommand() {
    return openCommand = openCommand != null ? openCommand : new Command(){
      @Override
      public void execute() {
        final DialogBox origDialog = new DialogBox();
        final FormPanel fp = new FormPanel();
        fp.setAction("./vkgwtdesigner/vksync");
        fp.setMethod(FormPanel.METHOD_POST);
        fp.setEncoding(FormPanel.ENCODING_MULTIPART);
        fp.addSubmitCompleteHandler(new SubmitCompleteHandler() {
          @Override
          public void onSubmitComplete(SubmitCompleteEvent event) {
            VkStateHelper.getInstance().getLoadSaveHelper().loadApplication(event.getResults());
            origDialog.hide();
          }
        });
        origDialog.setWidget(fp);
        final VerticalPanel dialog = new VerticalPanel();
        fp.setWidget(dialog);
        origDialog.setText("Upload Layout File");
        dialog.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
        dialog.setWidth("100%");
        DOM.setStyleAttribute(origDialog.getElement(), "zIndex", Integer.toString(Integer.MAX_VALUE));
        FileUpload fu = new FileUpload();
        fu.setName("file");
        dialog.add(fu);
        dialog.add(new Hidden("op", "upLoadLayoutFile"));
        HorizontalPanel buttonsPanel = new HorizontalPanel();
        dialog.add(buttonsPanel);
        Button saveButton = new Button("Submit");
        buttonsPanel.add(saveButton);
        saveButton.addClickHandler(new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            fp.submit();
          }
        });
        Button cancelButton = new Button("Cancel");
        buttonsPanel.add(cancelButton);
        cancelButton.addClickHandler(new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            origDialog.hide();
          }
        });
        origDialog.center();
      }
    };
  }
  private Command getClearCommand() {
    return clearCommand = clearCommand != null ? clearCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getLoadSaveHelper().clearApplication();
      }
    };
  }
  protected MenuBar getSaveAsMenu() {
    MenuBar saveMenuBar = new MenuBar(true);
    saveMenuBar.setStyleName("vkgwtdesigner-vertical-menu");
    saveMenuBar.addItem(IEngine.FILE, getDownloadCommand());
    saveMenuBar.addItem(IEngine.STRING, getSaveCommand());
    return saveMenuBar;
  }
  protected MenuBar getOpenMenu() {
    MenuBar loadMenuBar = new MenuBar(true);
    loadMenuBar.setStyleName("vkgwtdesigner-vertical-menu");
    loadMenuBar.addItem(IEngine.FILE, getOpenUsingFileCommand());
    loadMenuBar.addItem(IEngine.STRING, getOpenUsingStringCommand());
    return loadMenuBar;
  }
  private Command getSaveCommand() {
    return saveCommand = saveCommand != null ? saveCommand : new Command(){
      @Override
      public void execute() {
        final DialogBox saveDialog = new DialogBox();
        DOM.setStyleAttribute(saveDialog.getElement(), "zIndex", Integer.toString(Integer.MAX_VALUE));
        saveDialog.setText("Please copy the save string below to reproduce application later");
        VerticalPanel vp = new VerticalPanel();
        vp.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
        saveDialog.add(vp);
        TextArea ta = new TextArea();
        vp.add(ta);
        ta.setText(VkStateHelper.getInstance().getLoadSaveHelper().getSaveString());
        ta.setPixelSize(500, 200);
        Button ok = new Button("OK");
        vp.add(ok);
        ok.addClickHandler(new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            saveDialog.hide();
          }
        });
        saveDialog.center();   
      }
    };
  }
  private Command getPasteStyleCommand() {
    return pasteStyleCommand = pasteStyleCommand != null ? pasteStyleCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getClipBoardHelper().pasteStyle((IVkWidget) invokingWidget);
      }
    };
  }
  private Command getCopyStyleCommand() {
    return copyStyleCommand = copyStyleCommand != null ? copyStyleCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getClipBoardHelper().copyStyle((IVkWidget) invokingWidget);
      }
    };
  }
  private Command getRemoveCommand() {
    return removeCommand = removeCommand != null ? removeCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getEngine().removeWidget(invokingWidget);
        prepareMenu(((IVkWidget) invokingWidget).getVkParent());
    }};
  }
 
  private Command getResizeCommand() {
    return resizeCommand = resizeCommand != null ? resizeCommand :  new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getResizeHelper().resize(invokingWidget);
      }};
  }
  /*private Command getResizeRightCommand() {
    return resizeRightCommand = resizeRightCommand != null ? resizeRightCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getResizeHelper().resizeWidgetRight((IVkWidget) invokingWidget);
      }};
  }
  private Command getResizeLeftCommand() {
    return resizeLeftCommand = resizeLeftCommand != null ? resizeLeftCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getResizeHelper().resizeWidgetLeft((IVkWidget)invokingWidget);
      }};
  }
  private Command getResizeUpCommand() {
    return resizeUpCommand = resizeUpCommand != null ? resizeUpCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getResizeHelper().resizeWidgetUp((IVkWidget)invokingWidget);
      }};
  }
  private Command getResizeDownCommand() {
    return resizeDownCommand = resizeDownCommand != null ? resizeDownCommand : new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getResizeHelper().resizeWidgetDown((IVkWidget)invokingWidget);
      }};
  }*/
  private Command getCopyCommand() {
    return copyCommand = copyCommand != null ? copyCommand :  new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getClipBoardHelper().copyWidget((IVkWidget) invokingWidget);
      }
    };
  }
  private Command getCutCommand(){
    return cutCommand = cutCommand != null ? cutCommand :  new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getClipBoardHelper().cutWidget((IVkWidget) invokingWidget);
      }
    };
  };
  private Command getPasteCommand() {
    return pasteCommand = pasteCommand != null ? pasteCommand :  new Command(){
      @Override
      public void execute() {
        VkStateHelper.getInstance().getClipBoardHelper().pasteWidget((IVkPanel) invokingWidget);
      }
    };
  }
}
TOP

Related Classes of com.vk.gwt.designer.client.designer.VkMenu

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.