Advanced Draw

This is an Advanced Draw for ArcGIS Javascript API

by schlomm

HTML

<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css">
<link rel="stylesheet" href="http://js.arcgis.com/3.10/js/dojo/dijit/themes/claro/claro.css">
<!DOCTYPE html>
<html>
<head>
  <title>Advanced Draw</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
  <link rel="stylesheet" href="http://js.arcgis.com/3.10/js/dojo/dijit/themes/claro/claro.css">
  <link rel="stylesheet" href="http://js.arcgis.com/3.10/js/esri/css/esri.css">
  <style>
    html, body {
        height: 97%;
        width: 98%;
        margin: 1%;
    }	
    #DrawPane {
        width: 30%;
    }
  </style>
  <script>var dojoConfig = {
        packages: [{
          "name": "myModules",
          "location": location.pathname.replace(/\/[^/]+$/, "") 
        }]
      };
  </script>   
  
  <script src="http://js.arcgis.com/3.10/"></script>
    <script>
       define("myModules/CustomOperation",[
          "dojo/_base/declare", "esri/OperationBase", "esri/toolbars/navigation"
          ], function(declare, OperationBase, Navigation) {
            var customOp =  {};
            customOp.Add = declare(OperationBase, {
              label: "Add Graphic",
              constructor: function ( /*graphicsLayer, addedGraphic*/ params) {
                params = params || {};
                if (!params.graphicsLayer) {
                  console.error("graphicsLayer is not provided");
                  return;
                }
                this.graphicsLayer = params.graphicsLayer;

                if (!params.addedGraphic) {
                  console.error("no graphics provided");
                  return;
                }
                this._addedGraphic = params.addedGraphic;
              },

              performUndo: function () {
                this.graphicsLayer.remove(this._addedGraphic);
              },

              performRedo: function () {
             ...