DrawerContainer.java :  » GWT » gwtuml » com » objetdirect » gwt » umldrawer » client » Java Open Source

Java Open Source » GWT » gwtuml 
gwtuml » com » objetdirect » gwt » umldrawer » client » DrawerContainer.java
/*
 * This file is part of the Gwt-Uml project and was written by Raphal Brugier <raphael dot brugier at gmail dot com > for Objet Direct
 * <http://wwww.objetdirect.com>
 * 
 * Copyright  2010 Objet Direct
 * 
 * Gwt-Uml is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 * 
 * Gwt-Uml is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License along with Gwt-Generator. If not, see <http://www.gnu.org/licenses/>.
 */
package com.objetdirect.gwt.umldrawer.client;

import static com.objetdirect.gwt.umlapi.client.umlcomponents.DiagramType.CLASS;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.ResizeComposite;
import com.google.gwt.user.client.ui.Widget;
import com.objetdirect.gwt.umlapi.client.Drawer;
import com.objetdirect.gwt.umlapi.client.helpers.OptionsManager;
import com.objetdirect.gwt.umlapi.client.helpers.UMLCanvas;
import com.objetdirect.gwt.umlapi.client.umlcomponents.DiagramType;

/**
 * Contains the drawer and the buttons to export the current displayed drawer.
 * @author Raphael Brugier (raphael-dot-brugier.at.gmail'dot'com)
 */
public class DrawerContainer extends ResizeComposite {

  private static DrawerContainerUiBinder uiBinder = GWT
      .create(DrawerContainerUiBinder.class);

  interface DrawerContainerUiBinder extends UiBinder<Widget, DrawerContainer> {
  }

  @UiField
  Button exportToUrl;

  @UiField
  Button clearUrl;
  
  @UiField
  Button exportToSvg;
  
  @UiField
  LayoutPanel drawerContainer;

  
  private UMLCanvas umlCanvas;
  
  private Drawer drawer;

  /**
   *  Create a default canvas for a class Diagram.
   */
  public DrawerContainer() {
    initWidget(uiBinder.createAndBindUi(this));
    OptionsManager.set("DiagramType", CLASS.getIndex());
    umlCanvas = new UMLCanvas(CLASS);
    drawer = new Drawer(umlCanvas);
    
    drawerContainer.add(drawer);
  }
  
  
  public DrawerContainer(UrlParser urlParser) {
    initWidget(uiBinder.createAndBindUi(this));
    
    OptionsManager.setAllFromURL(urlParser.getOptionsList());
    int diagramIndex = OptionsManager.get("DiagramType");
    DiagramType diagramType = DiagramType.fromIndex(diagramIndex);
    
    umlCanvas = new UMLCanvas(diagramType);
    drawer = new Drawer(umlCanvas);
    umlCanvas.getArtifactById().clear();
    if (urlParser.getDiagram64() != null) {
      umlCanvas.fromURL(urlParser.getDiagram64(), false);
    }
    
    drawerContainer.add(drawer);
  }

  /**
   * @return the umlCanvas
   */
  public UMLCanvas getUmlCanvas() {
    return umlCanvas;
  }

  /**
   * @return the drawer
   */
  public Drawer getDrawer() {
    return drawer;
  }
  
  @Override
  public void onResize() {
    super.onResize();
    
  }
  
  @Override
  protected void onLoad() {
    super.onLoad();
  }
  
  @UiHandler("exportToUrl")
  void clickExportToUrl(ClickEvent event) {
    HistoryManager.upgradeDiagramURL(umlCanvas.toUrl());
  }
  
  @UiHandler("clearUrl")
  void clickClearUrl(ClickEvent event) {
    HistoryManager.upgradeDiagramURL("");
  }
  
  @UiHandler("exportToSvg")
  void clickExportToSvg(ClickEvent event) {
    String svg = "<?xml version='1.0' standalone='no'?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>";
//    Session.getActiveCanvas().clearArrows(); //TODO
    svg += DOM.getInnerHTML((Element) umlCanvas.getContainer().getElement().getFirstChildElement());
    Window.open("data:image/xml+svg;charset=utf-8," + svg, "SVG export", "top");
//    Session.getActiveCanvas().makeArrows(); //TODO
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.