aws-cfn-stacker 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/Gemfile +53 -0
- data/README.rdoc +28 -0
- data/Rakefile +22 -1
- data/app/assets/images/.keep +0 -0
- data/app/assets/javascripts/application.js +16 -0
- data/app/assets/javascripts/pizza_service.js.coffee +3 -0
- data/app/assets/javascripts/version.js.coffee +3 -0
- data/app/assets/stylesheets/application.css +15 -0
- data/app/assets/stylesheets/pizza_service.css.scss +3 -0
- data/app/assets/stylesheets/version.css.scss +3 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/pizza_service_controller.rb +2 -0
- data/app/controllers/version_controller.rb +32 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/helpers/pizza_service_helper.rb +2 -0
- data/app/helpers/version_helper.rb +74 -0
- data/app/mailers/.keep +0 -0
- data/app/models/.keep +0 -0
- data/app/models/concerns/.keep +0 -0
- data/app/views/layouts/application.html.erb +14 -0
- data/app/views/version/index.html.erb +2 -0
- data/app/views/version/versioninfo.html.erb +3 -0
- data/aws-cfn-stacker.gemspec +15 -7
- data/aws-cfn-stacker.iml +127 -28
- data/bin/cfn-stacker +12 -21
- data/bin/stacker +16 -0
- data/config.ru +4 -0
- data/config/application.rb +23 -0
- data/config/boot.rb +4 -0
- data/config/database.yml +25 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +37 -0
- data/config/environments/production.rb +78 -0
- data/config/environments/test.rb +39 -0
- data/config/initializers/assets.rb +8 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/cookies_serializer.rb +3 -0
- data/config/initializers/filter_parameter_logging.rb +4 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/initializers/mime_types.rb +4 -0
- data/config/initializers/session_store.rb +3 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/en.yml +23 -0
- data/config/routes.rb +60 -0
- data/config/secrets.yml +22 -0
- data/db/development.sqlite3 +0 -0
- data/db/seeds.rb +7 -0
- data/db/test.sqlite3 +0 -0
- data/lib/assets/.keep +0 -0
- data/lib/aws/cfn/stacker.rb +5 -6
- data/lib/aws/cfn/stacker/base.rb +198 -1
- data/lib/aws/cfn/stacker/commands/list_params.rb +5 -0
- data/lib/aws/cfn/stacker/mixins/convert_to_class_name.rb +44 -0
- data/lib/aws/cfn/stacker/mixins/main.rb +28 -29
- data/lib/aws/cfn/stacker/mixins/options.rb +74 -43
- data/lib/aws/cfn/stacker/mixins/prerequisites.rb +4 -4
- data/lib/aws/cfn/stacker/subcommand_loader.rb +30 -0
- data/lib/aws/cfn/stacker/version.rb +2 -1
- data/lib/tasks/.keep +0 -0
- data/log/.keep +0 -0
- data/public/404.html +67 -0
- data/public/422.html +67 -0
- data/public/500.html +66 -0
- data/public/favicon.ico +0 -0
- data/public/robots.txt +5 -0
- data/spec/controllers/pizza_service_controller_spec.rb +5 -0
- data/spec/helpers/pizza_service_helper_spec.rb +15 -0
- data/spec/rails_helper.rb +51 -0
- data/spec/spec_helper.rb +85 -0
- data/ui/build.xml +172 -0
- data/ui/lib/gwt-dev-2.6.1.jar +0 -0
- data/ui/lib/gwt-user-2.6.1.jar +0 -0
- data/ui/lib/gxt-3.1.1.jar +0 -0
- data/ui/lib/gxt-chart-3.1.1.jar +0 -0
- data/ui/lib/gxt-theme-neptune-3.1.1.jar +0 -0
- data/ui/lib/jackson-annotations-2.3.2.jar +0 -0
- data/ui/lib/jackson-core-2.3.2.jar +0 -0
- data/ui/lib/jackson-databind-2.3.2.jar +0 -0
- data/ui/lib/jsr311-api-1.1.1-sources.jar +0 -0
- data/ui/lib/jsr311-api-1.1.1.jar +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/ApiBase.java +20 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/model/OrderConfirmation.java +55 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/model/Pizza.java +47 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/model/PizzaOrder.java +74 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/model/Topping.java +42 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/service/GreetingService.java +12 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/service/GreetingServiceAsync.java +11 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/service/JSONBindingService.java +61 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/service/JSONRPCPizzaService.java +11 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/service/MethodService.java +51 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/api/service/PizzaService.java +49 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/Desktop.gwt.xml +29 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/layout/CascadeDesktopLayout.java +61 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/layout/CenterDesktopLayout.java +59 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/layout/DesktopLayout.java +40 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/layout/DesktopLayoutType.java +15 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/layout/LimitedDesktopLayout.java +54 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/layout/TileDesktopLayout.java +83 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/container/DesktopLayout.css +22 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/container/DesktopLayoutDefaultAppearance.java +75 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/container/desktop.jpg +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/ShortcutCell.css +7 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/ShortcutCellDefaultAppearance.java +35 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/ShortcutTableFrame.css +37 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/ShortcutTableFrameResources.java +104 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/background.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/backgroundOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/backgroundPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomLeftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomLeftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomLeftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomRightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomRightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/bottomRightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/leftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/leftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/leftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/rightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/rightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/rightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topLeftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topLeftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topLeftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topRightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topRightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/shortcut/topRightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/StartButtonCell.css +22 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/StartButtonCellDefaultAppearance.java +48 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/StartButtonTableFrame.css +171 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/StartButtonTableFrameResources.java +105 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/background.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/backgroundOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/backgroundPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomLeftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomLeftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomLeftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomRightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomRightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/bottomRightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/leftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/leftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/leftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/rightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/rightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/rightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/startButtonIcon.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topLeftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topLeftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topLeftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topRightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topRightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startbutton/topRightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartHeadingMenuItem.css +11 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartHeadingMenuItemAppearance.java +44 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartItem.css +17 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartMainMenu.css +12 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartMainMenu.html +3 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartMainMenuAppearance.java +70 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartMenu.css +29 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartMenu.html +11 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartMenuDefaultAppearance.java +96 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartToolMenu.css +12 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartToolMenu.html +3 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartToolMenuAppearance.java +60 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartToolMenuItem.css +10 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/StartToolMenuItemAppearance.java +45 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/startmenu/itemOver.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/TaskButtonCell.css +15 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/TaskButtonCellDefaultAppearance.java +36 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/TaskButtonTableFrame.css +171 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/TaskButtonTableFrameResources.java +105 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/background.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/backgroundOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/backgroundPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomLeftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomLeftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomLeftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomRightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomRightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/bottomRightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/leftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/leftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/leftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/rightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/rightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/rightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topLeftBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topLeftOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topLeftPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topRightBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topRightOverBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/theme/base/taskbutton/topRightPressedBorder.gif +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/AutoVerticalLayoutContainer.java +19 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/Desktop.java +483 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/DesktopLayoutContainer.java +227 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/EnumComboBox.java +1 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/ScaleOnResizeSupport.java +156 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/Shortcut.java +38 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/ShortcutCell.java +59 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartButton.java +75 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartButtonCell.java +59 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartHeadingMenuItem.java +62 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartMainMenu.java +68 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartMainMenuItem.java +60 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartMenu.java +260 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartToolMenu.java +68 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/StartToolMenuItem.java +71 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/TaskBar.java +192 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/TaskButton.java +64 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/TaskButtonCell.java +59 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktop/client/widget/WindowManager.java +226 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/DesktopApp.gwt.xml +27 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/DesktopApp.java +304 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/DesktopAppPresenter.java +232 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/DesktopAppPresenterImpl.java +436 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/DesktopAppView.java +33 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/DesktopAppViewImpl.java +263 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/DesktopBus.java +297 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/FileBasedMiniAppPresenter.java +21 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/FileBasedMiniAppPresenterImpl.java +257 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/FileBasedMiniAppView.java +22 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/LoginModel.java +73 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/LoginPresenter.java +30 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/LoginPresenterImpl.java +85 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/LoginView.java +62 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/LoginViewImpl.java +232 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/Presenter.java +26 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/ProfileFactory.java +31 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/ProfileModel.java +69 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/ProfilePresenter.java +44 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/ProfilePresenterImpl.java +78 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/ProfileView.java +51 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/ProfileViewImpl.java +220 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/browser/BrowserPresenter.java +22 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/browser/BrowserPresenterImpl.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/browser/BrowserView.java +14 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/browser/BrowserViewImpl.java +90 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/AddFileModelEvent.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/AddStackModelEvent.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/CloseFileModelEvent.java +48 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/CreateFileModelEvent.java +49 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/LoginEvent.java +46 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/LogoutEvent.java +34 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/OpenFileModelEvent.java +48 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/OpenStackModelEvent.java +48 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/RemoveFileModelEvent.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/RemoveStackModelEvent.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/SelectFileModelEvent.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/SelectStackModelEvent.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/UpdateFileModelEvent.java +42 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/UpdateProfileEvent.java +53 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/event/UpdateStackModelEvent.java +42 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerGridInlineEditing.java +73 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerIconProvider.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerMenu.java +266 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerPresenter.java +40 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerPresenterImpl.java +158 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerSizeCell.java +47 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerToolBar.java +273 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerTreeGrid.java +49 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerView.java +29 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/FileManagerViewImpl.java +379 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/Images.java +60 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/arrow_in.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/arrow_out.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/bin_closed.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/bullet_go.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/cross.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/disk.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/folder.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/folder_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/page_white.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/page_white_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/script.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/script_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/table.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/table_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/textfield_rename.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/world.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/filemanager/images/world_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/DesktopImages.java +40 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/application_cascade.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/application_tile_horizontal.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/door_in.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/door_out.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/folder.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/folder_shortcut.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/grid.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/stack.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/stack_shortcut.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/table.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/user.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/images/user_edit.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/interpreter/InterpreterPresenter.java +16 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/interpreter/InterpreterPresenterImpl.java +150 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/interpreter/InterpreterView.java +16 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/interpreter/InterpreterViewImpl.java +243 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/AutoBeanToString.java +17 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/BackingStore.java +20 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/FileModel.java +47 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/FileModelFactory.java +19 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/FileModelProperties.java +32 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/FileSystem.java +350 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/MemoryBackingStore.java +45 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StackModel.java +48 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StackModelFactory.java +19 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StackModelProperties.java +32 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StackPile.java +350 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StorageBackingStore.java +61 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StorageProvider.java +71 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/service/LoginServiceProvider.java +1 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/service/LoginServiceRequest.java +1 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/service/ProfileServiceProvider.java +1 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/service/ProfileServiceRequest.java +1 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/servicebus/ServiceBus.java +1 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/servicebus/ServiceProvider.java +13 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/servicebus/ServiceRequest.java +13 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/ChartValueProvider.java +47 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/ColumnProvider.java +19 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/Evaluator.java +547 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/Row.java +21 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/RowValueProvider.java +33 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetChartListStoreAdapter.java +236 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetChartPresenter.java +21 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetChartPresenterImpl.java +74 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetChartView.java +18 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetChartViewImpl.java +284 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetMenu.java +133 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetPresenter.java +40 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetPresenterImpl.java +194 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetToolBar.java +189 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetUtilities.java +55 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetView.java +28 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/SpreadsheetViewImpl.java +420 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/Table.java +23 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/TableCategory.java +19 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/TableFactory.java +21 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/TableValueProvider.java +14 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/Worksheet.java +353 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/Images.java +46 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/arrow_down.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/arrow_left.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/arrow_right.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/arrow_up.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/chart_bar.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/chart_line.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/chart_pie.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/table_column_delete.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/images/table_row_delete.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerGridInlineEditing.java +73 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerIconProvider.java +32 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerMenu.java +233 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerPresenter.java +40 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerPresenterImpl.java +155 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerSizeCell.java +47 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerToolBar.java +234 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerTreeGrid.java +49 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerView.java +29 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/StackManagerViewImpl.java +379 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/Images.java +45 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/arrow_in.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/arrow_out.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/bin_closed.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/bullet_go.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/folder.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/folder_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/stack.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/stack_add.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/stackmanager/images/textfield_rename.png +0 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/utility/Prompt.java +23 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/utility/PromptImpl.java +72 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/utility/Utility.java +41 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/wordprocessor/WordProcessorPresenter.java +14 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/wordprocessor/WordProcessorPresenterImpl.java +43 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/wordprocessor/WordProcessorView.java +14 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/wordprocessor/WordProcessorViewImpl.java +107 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/Messages.gwt.xml +15 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages.java +19 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages.properties +8 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessagesApi.java +34 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_ca.properties +109 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_cs.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_da.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_de.properties +107 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_el_GR.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_es.properties +110 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_fr.properties +134 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_hu.properties +134 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_it.properties +107 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_ja.properties +190 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_nl.properties +190 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_no.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_pl.properties +166 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_pt.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_pt_BR.properties +116 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_pt_PT.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_ru.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_sl.properties +152 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_tr.properties +186 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_ua.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/messages/client/DesktopMessages_zh.properties +106 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/server/GreetingServiceImpl.java +47 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/server/JsonpServlet.java +50 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/server/PizzaServlet.java +131 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/server/TestServlet.java +162 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/shared/FieldVerifier.java +42 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/ui/UI.gwt.xml +77 -0
- data/ui/src/com/dldinternet/aws/cfn/stacker/ui/UI.java +180 -0
- data/ui/war/.htaccess +10 -0
- data/ui/war/UI.css +34 -0
- data/ui/war/UI.html +86 -0
- data/ui/war/WEB-INF/web.xml +91 -0
- data/ui/war/images/large-loading.gif +0 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- metadata +532 -31
data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StorageBackingStore.java
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.persistence;
|
9
|
+
|
10
|
+
import com.google.gwt.storage.client.Storage;
|
11
|
+
import com.google.gwt.storage.client.StorageMap;
|
12
|
+
|
13
|
+
import java.util.Iterator;
|
14
|
+
|
15
|
+
// TODO: Consider decorator pattern for encryption layer support
|
16
|
+
|
17
|
+
public class StorageBackingStore implements BackingStore {
|
18
|
+
|
19
|
+
private static final String DELIMITER = ".";
|
20
|
+
|
21
|
+
private Storage storage;
|
22
|
+
private String storageKeyPrefix;
|
23
|
+
|
24
|
+
public StorageBackingStore(Storage storage, String storageKeyPrefix) {
|
25
|
+
this.storage = storage;
|
26
|
+
this.storageKeyPrefix = storageKeyPrefix;
|
27
|
+
}
|
28
|
+
|
29
|
+
@Override
|
30
|
+
public void clear() {
|
31
|
+
String qualifiedStorageKeyPrefix = storageKeyPrefix + DELIMITER;
|
32
|
+
StorageMap storageMap = new StorageMap(storage);
|
33
|
+
Iterator<String> iterator = storageMap.keySet().iterator();
|
34
|
+
while (iterator.hasNext()) {
|
35
|
+
String key = iterator.next();
|
36
|
+
if (key.startsWith(qualifiedStorageKeyPrefix)) {
|
37
|
+
iterator.remove();
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
@Override
|
43
|
+
public String getItem(String key) {
|
44
|
+
return storage.getItem(getStorageKey(key));
|
45
|
+
}
|
46
|
+
|
47
|
+
@Override
|
48
|
+
public void removeItem(String key) {
|
49
|
+
storage.removeItem(getStorageKey(key));
|
50
|
+
}
|
51
|
+
|
52
|
+
@Override
|
53
|
+
public void setItem(String key, String data) {
|
54
|
+
storage.setItem(getStorageKey(key), data);
|
55
|
+
}
|
56
|
+
|
57
|
+
private String getStorageKey(String key) {
|
58
|
+
return storageKeyPrefix + DELIMITER + key;
|
59
|
+
}
|
60
|
+
|
61
|
+
}
|
data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/persistence/StorageProvider.java
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.persistence;
|
9
|
+
|
10
|
+
import com.google.gwt.core.client.GWT;
|
11
|
+
import com.google.gwt.storage.client.Storage;
|
12
|
+
import com.google.gwt.storage.client.StorageEvent;
|
13
|
+
import com.google.gwt.storage.client.StorageEvent.Handler;
|
14
|
+
import com.google.gwt.storage.client.StorageMap;
|
15
|
+
import com.sencha.gxt.core.client.GXTLogConfiguration;
|
16
|
+
|
17
|
+
import java.util.Map.Entry;
|
18
|
+
import java.util.logging.Logger;
|
19
|
+
|
20
|
+
public class StorageProvider {
|
21
|
+
|
22
|
+
private static Logger logger = Logger.getLogger(StorageProvider.class.getName());
|
23
|
+
private Storage storage;
|
24
|
+
|
25
|
+
public StorageProvider() {
|
26
|
+
storage = Storage.getLocalStorageIfSupported();
|
27
|
+
dumpStorage("initialize");
|
28
|
+
addStorageChangeTrace();
|
29
|
+
}
|
30
|
+
|
31
|
+
public void clearAll() {
|
32
|
+
if (GXTLogConfiguration.loggingIsEnabled()) {
|
33
|
+
logger.severe("clearAll: clearing local storage");
|
34
|
+
}
|
35
|
+
storage.clear();
|
36
|
+
}
|
37
|
+
|
38
|
+
public Storage getStorage() {
|
39
|
+
return storage;
|
40
|
+
}
|
41
|
+
|
42
|
+
private void addStorageChangeTrace() {
|
43
|
+
if (GXTLogConfiguration.loggingIsEnabled()) {
|
44
|
+
Storage.addStorageEventHandler(new Handler() {
|
45
|
+
@Override
|
46
|
+
public void onStorageChange(StorageEvent event) {
|
47
|
+
String key = event.getKey();
|
48
|
+
String oldValue = event.getOldValue();
|
49
|
+
String newValue = event.getNewValue();
|
50
|
+
logger.finer("onStorageChange: key=" + key + "\noldValue=" + oldValue + "\nnewValue=" + newValue);
|
51
|
+
dumpStorage("change");
|
52
|
+
}
|
53
|
+
});
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
private void dumpStorage(String reason) {
|
58
|
+
if (GXTLogConfiguration.loggingIsEnabled() && !GWT.isProdMode()) {
|
59
|
+
logger.finest("dumpStorage: reason=" + reason);
|
60
|
+
if (storage == null) {
|
61
|
+
logger.severe("local storage is not available");
|
62
|
+
} else {
|
63
|
+
StorageMap storageMap = new StorageMap(storage);
|
64
|
+
for (Entry<?, ?> entry : storageMap.entrySet()) {
|
65
|
+
logger.finest("key=" + entry.getKey() + ", value=" + entry.getValue());
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
}
|
data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/service/LoginServiceProvider.java
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/**
|
2
|
* Sencha GXT 3.1.1 - Sencha for GWT
|
1
3
|
* Copyright(c) 2007-2014, Sencha, Inc.
|
2
4
|
* licensing@sencha.com
|
3
5
|
*
|
4
6
|
* http://www.sencha.com/products/gxt/license/
|
5
7
|
*/
|
6
8
|
private LoginPresenter loginPresenter;
|
7
9
|
private HasWidgets hasWidgets;
|
8
10
|
public LoginServiceProvider(LoginPresenter loginPresenter, HasWidgets hasWidgets) {
|
9
11
|
this.loginPresenter = loginPresenter;
|
10
12
|
this.hasWidgets = hasWidgets;
|
11
13
|
}
|
12
14
|
@Override
|
13
15
|
public void onServiceRequest(LoginServiceRequest loginServiceRequest) {
|
14
16
|
loginPresenter.go(hasWidgets);
|
15
17
|
}
|
data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/service/ProfileServiceProvider.java
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/**
|
2
|
* Sencha GXT 3.1.1 - Sencha for GWT
|
1
3
|
* Copyright(c) 2007-2014, Sencha, Inc.
|
2
4
|
* licensing@sencha.com
|
3
5
|
*
|
4
6
|
* http://www.sencha.com/products/gxt/license/
|
5
7
|
*/
|
6
8
|
private ProfilePresenter profilePresenter;
|
7
9
|
private HasWidgets hasWidgets;
|
8
10
|
public ProfileServiceProvider(ProfilePresenter profilePresenter, HasWidgets hasWidgets) {
|
9
11
|
this.profilePresenter = profilePresenter;
|
10
12
|
this.hasWidgets = hasWidgets;
|
11
13
|
}
|
12
14
|
@Override
|
13
15
|
public void onServiceRequest(ProfileServiceRequest profileServiceRequest) {
|
14
16
|
profilePresenter.go(hasWidgets);
|
15
17
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
/**
|
2
|
* Sencha GXT 3.1.1 - Sencha for GWT
|
1
3
|
* Copyright(c) 2007-2014, Sencha, Inc.
|
2
4
|
* licensing@sencha.com
|
3
5
|
*
|
4
6
|
* http://www.sencha.com/products/gxt/license/
|
5
7
|
*/
|
6
8
|
private HashMap<Object, Object> serviceProviders = new HashMap<Object, Object>();
|
7
9
|
public ServiceBus() {
|
8
10
|
}
|
9
11
|
@SuppressWarnings("unchecked")
|
10
12
|
public <T extends ServiceRequest> T invoke(T serviceRequest) {
|
11
13
|
ServiceProvider<T> serviceProvider = (ServiceProvider<T>) serviceProviders.get(serviceRequest.getClass());
|
12
14
|
if (serviceProvider == null) {
|
13
15
|
throw new IllegalStateException("No service provider, serviceRequest=" + serviceRequest.getClass().getName());
|
14
16
|
}
|
15
17
|
serviceProvider.onServiceRequest(serviceRequest);
|
16
18
|
return serviceRequest; // for one step access to getters
|
17
19
|
}
|
18
20
|
public <T extends ServiceRequest> void registerServiceProvider(Class<T> serviceRequestClass,
|
19
21
|
ServiceProvider<T> serviceProvider) {
|
20
22
|
Object previousServiceProvider = serviceProviders.put(serviceRequestClass, serviceProvider);
|
21
23
|
if (previousServiceProvider != null) {
|
22
24
|
throw new IllegalStateException("Provider already defined, serviceRequest=" + serviceRequestClass.getName()
|
23
25
|
+ ", serviceProvider=" + serviceProvider.getClass().getName());
|
24
26
|
}
|
25
27
|
}
|
26
28
|
public <T extends ServiceRequest> void removeServiceProvider(Class<T> serviceRequestClass) {
|
27
29
|
serviceProviders.remove(serviceRequestClass);
|
28
30
|
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.servicebus;
|
9
|
+
|
10
|
+
public interface ServiceProvider<T extends ServiceRequest>
|
11
|
+
{
|
12
|
+
public void onServiceRequest(T serviceRequest);
|
13
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.servicebus;
|
9
|
+
|
10
|
+
public interface ServiceRequest
|
11
|
+
{
|
12
|
+
|
13
|
+
}
|
data/ui/src/com/dldinternet/aws/cfn/stacker/desktopapp/client/spreadsheet/ChartValueProvider.java
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.spreadsheet;
|
9
|
+
|
10
|
+
import com.sencha.gxt.core.client.ValueProvider;
|
11
|
+
|
12
|
+
public class ChartValueProvider implements ValueProvider<Row, Number> {
|
13
|
+
private int columnIndex;
|
14
|
+
private Worksheet worksheet;
|
15
|
+
|
16
|
+
public ChartValueProvider(Worksheet worksheet, int columnIndex) {
|
17
|
+
this.worksheet = worksheet;
|
18
|
+
this.columnIndex = columnIndex;
|
19
|
+
}
|
20
|
+
|
21
|
+
@Override
|
22
|
+
public String getPath() {
|
23
|
+
return worksheet.getValue(0, columnIndex);
|
24
|
+
}
|
25
|
+
|
26
|
+
@Override
|
27
|
+
public Number getValue(Row row) {
|
28
|
+
Number number;
|
29
|
+
String value = row.getColumns().get(columnIndex);
|
30
|
+
if (value.startsWith(Evaluator.EXPRESSION_MARKER)) {
|
31
|
+
int rowIndex = worksheet.getListStore().indexOf(row);
|
32
|
+
number = worksheet.evaluate(value, rowIndex, columnIndex);
|
33
|
+
} else {
|
34
|
+
try {
|
35
|
+
number = Double.parseDouble(value);
|
36
|
+
} catch (RuntimeException e) {
|
37
|
+
number = 0;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
return number;
|
41
|
+
}
|
42
|
+
|
43
|
+
@Override
|
44
|
+
public void setValue(Row row, Number value) {
|
45
|
+
throw new UnsupportedOperationException();
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.spreadsheet;
|
9
|
+
|
10
|
+
import com.google.gwt.safehtml.shared.SafeHtml;
|
11
|
+
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
|
12
|
+
|
13
|
+
public interface ColumnProvider {
|
14
|
+
|
15
|
+
ColumnConfig<Row, Object> getColumn(int cellIndex);
|
16
|
+
|
17
|
+
void setColumnHeader(int columnIndex, SafeHtml fromString);
|
18
|
+
|
19
|
+
}
|
@@ -0,0 +1,547 @@
|
|
1
|
+
/**
|
2
|
+
* Sencha GXT 3.1.1 - Sencha for GWT
|
3
|
+
* Copyright(c) 2007-2014, Sencha, Inc.
|
4
|
+
* licensing@sencha.com
|
5
|
+
*
|
6
|
+
* http://www.sencha.com/products/gxt/license/
|
7
|
+
*/
|
8
|
+
package com.dldinternet.aws.cfn.stacker.desktopapp.client.spreadsheet;
|
9
|
+
|
10
|
+
import com.google.gwt.regexp.shared.MatchResult;
|
11
|
+
import com.google.gwt.regexp.shared.RegExp;
|
12
|
+
|
13
|
+
/**
|
14
|
+
* <pre>
|
15
|
+
* expression =
|
16
|
+
* simple-expression
|
17
|
+
* | "-" expression
|
18
|
+
* | "+" expression
|
19
|
+
* | "=" expression .
|
20
|
+
*
|
21
|
+
* simple-expression = term {("+"|"-") term} .
|
22
|
+
*
|
23
|
+
* term = factor {("*"|"/") factor} .
|
24
|
+
*
|
25
|
+
* factor =
|
26
|
+
* name
|
27
|
+
* | number
|
28
|
+
* | "(" expression ")" .
|
29
|
+
*
|
30
|
+
* name =
|
31
|
+
* cell-reference
|
32
|
+
* | function-name "(" expression {"," expression} ")" .
|
33
|
+
*
|
34
|
+
* </pre>
|
35
|
+
*
|
36
|
+
* The leading '=' form of the expression is provided to simplify use of
|
37
|
+
* EXPRESSION_MARKER in spreadsheet formulas.
|
38
|
+
*
|
39
|
+
* As is the convention, the leading '+' form of the expression is provided for
|
40
|
+
* symmetry with the leading '-' form.
|
41
|
+
*
|
42
|
+
* A cell-reference takes the conventional column-name-row-number form, where
|
43
|
+
* either can be specified as $ to indicate the same column or row, for example:
|
44
|
+
*
|
45
|
+
* <pre>
|
46
|
+
* =((B1-A1)/A1)*100 to calculate percent increase from A1 to B1
|
47
|
+
* =SUM(B2:B6) to sum rows 2 through 6 in column B
|
48
|
+
* =SUM($2:$6) to sum rows 2 through 6 in the same column
|
49
|
+
* =SUM(B$:F$) to sum columns B through F in the same row
|
50
|
+
* </pre>
|
51
|
+
*/
|
52
|
+
public final class Evaluator {
|
53
|
+
|
54
|
+
public enum Location {
|
55
|
+
COLUMN, ROW
|
56
|
+
}
|
57
|
+
|
58
|
+
public enum Operation {
|
59
|
+
DELETE, INSERT, RESTORE, SAVE
|
60
|
+
}
|
61
|
+
|
62
|
+
public class RecursiveExpressionException extends IllegalArgumentException {
|
63
|
+
|
64
|
+
public RecursiveExpressionException(String message) {
|
65
|
+
super(message);
|
66
|
+
}
|
67
|
+
|
68
|
+
}
|
69
|
+
|
70
|
+
public class Scanner {
|
71
|
+
private int base;
|
72
|
+
private int current;
|
73
|
+
private String expression;
|
74
|
+
|
75
|
+
public Scanner(String expression) {
|
76
|
+
this.expression = expression;
|
77
|
+
}
|
78
|
+
|
79
|
+
public String getNext() {
|
80
|
+
base = current;
|
81
|
+
int length = expression.length();
|
82
|
+
State state = State.INITIAL;
|
83
|
+
StringBuilder s = new StringBuilder();
|
84
|
+
char quote = 0;
|
85
|
+
|
86
|
+
while (current < length && state != State.FINAL) {
|
87
|
+
char c = expression.charAt(current);
|
88
|
+
switch (state) {
|
89
|
+
case INITIAL:
|
90
|
+
if (isOperator(c)) {
|
91
|
+
s.append(c);
|
92
|
+
state = State.FINAL;
|
93
|
+
} else if (isAlpha(c)) {
|
94
|
+
s.append(c);
|
95
|
+
state = State.IDENTIFIER;
|
96
|
+
} else if (c == '.' || isDigit(c)) {
|
97
|
+
s.append(c);
|
98
|
+
state = State.NUMBER;
|
99
|
+
} else if (c == '\'') {
|
100
|
+
quote = c;
|
101
|
+
state = State.QUOTE;
|
102
|
+
} else if (!isWhitespace(c)) {
|
103
|
+
throw new IllegalArgumentException("Unexpected character " + c);
|
104
|
+
}
|
105
|
+
break;
|
106
|
+
case IDENTIFIER:
|
107
|
+
if (isWhitespace(c)) {
|
108
|
+
state = State.FINAL;
|
109
|
+
} else if (isOperator(c)) {
|
110
|
+
current--;
|
111
|
+
state = State.FINAL;
|
112
|
+
} else {
|
113
|
+
s.append(c);
|
114
|
+
}
|
115
|
+
break;
|
116
|
+
case NUMBER:
|
117
|
+
if (c == '.' || isDigit(c)) {
|
118
|
+
s.append(c);
|
119
|
+
} else {
|
120
|
+
current--;
|
121
|
+
state = State.FINAL;
|
122
|
+
}
|
123
|
+
break;
|
124
|
+
case QUOTE:
|
125
|
+
if (c == quote) {
|
126
|
+
state = State.FINAL;
|
127
|
+
} else {
|
128
|
+
s.append(c);
|
129
|
+
}
|
130
|
+
break;
|
131
|
+
case FINAL:
|
132
|
+
// do nothing
|
133
|
+
}
|
134
|
+
current++;
|
135
|
+
}
|
136
|
+
return s.toString();
|
137
|
+
}
|
138
|
+
|
139
|
+
public void retract() {
|
140
|
+
current = base;
|
141
|
+
}
|
142
|
+
|
143
|
+
private boolean isAlpha(char c) {
|
144
|
+
return Character.isLetter(c) || c == '$' || c == '@';
|
145
|
+
}
|
146
|
+
|
147
|
+
private boolean isDigit(char c) {
|
148
|
+
return Character.isDigit(c);
|
149
|
+
}
|
150
|
+
|
151
|
+
private boolean isOperator(char c) {
|
152
|
+
return c == '+' || c == '-' || c == '*' || c == '/' || c == '(' || c == ')' || c == ',' || c == ':' || c == '=';
|
153
|
+
}
|
154
|
+
|
155
|
+
private boolean isWhitespace(char c) {
|
156
|
+
// Note: GWT does not support Character.isWhitespace
|
157
|
+
return c == ' ' || c == '\t' || c == '\n' || c == '\r';
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
public enum State {
|
162
|
+
FINAL, IDENTIFIER, INITIAL, NUMBER, QUOTE
|
163
|
+
}
|
164
|
+
|
165
|
+
private class AvgVisitor implements Visitor {
|
166
|
+
|
167
|
+
int count;
|
168
|
+
double sum;
|
169
|
+
|
170
|
+
public double getValue() {
|
171
|
+
return count == 0 ? 0 : sum / count;
|
172
|
+
}
|
173
|
+
|
174
|
+
@Override
|
175
|
+
public void initialize() {
|
176
|
+
count = 0;
|
177
|
+
sum = 0;
|
178
|
+
}
|
179
|
+
|
180
|
+
@Override
|
181
|
+
public void visit(int rowIndex, int columnIndex) {
|
182
|
+
count++;
|
183
|
+
sum += getDouble(rowIndex, columnIndex);
|
184
|
+
}
|
185
|
+
|
186
|
+
}
|
187
|
+
|
188
|
+
private class Cell {
|
189
|
+
|
190
|
+
private String rowName;
|
191
|
+
private int rowIndex;
|
192
|
+
private String columnName;
|
193
|
+
private int columnIndex;
|
194
|
+
|
195
|
+
private Cell(String rowName, int rowIndex, String columnName, int columnIndex) {
|
196
|
+
this.rowName = rowName;
|
197
|
+
this.rowIndex = rowIndex;
|
198
|
+
this.columnName = columnName;
|
199
|
+
this.columnIndex = columnIndex;
|
200
|
+
}
|
201
|
+
|
202
|
+
private int getColumnIndex() {
|
203
|
+
return columnIndex;
|
204
|
+
}
|
205
|
+
|
206
|
+
private String getColumnName() {
|
207
|
+
return columnName;
|
208
|
+
}
|
209
|
+
|
210
|
+
private int getRowIndex() {
|
211
|
+
return rowIndex;
|
212
|
+
}
|
213
|
+
|
214
|
+
private String getRowName() {
|
215
|
+
return rowName;
|
216
|
+
}
|
217
|
+
|
218
|
+
}
|
219
|
+
|
220
|
+
private class MaxVisitor implements Visitor {
|
221
|
+
|
222
|
+
double max;
|
223
|
+
|
224
|
+
public double getValue() {
|
225
|
+
return max;
|
226
|
+
}
|
227
|
+
|
228
|
+
@Override
|
229
|
+
public void initialize() {
|
230
|
+
max = Double.MIN_NORMAL;
|
231
|
+
}
|
232
|
+
|
233
|
+
@Override
|
234
|
+
public void visit(int rowIndex, int columnIndex) {
|
235
|
+
max = Math.max(max, getDouble(rowIndex, columnIndex));
|
236
|
+
}
|
237
|
+
}
|
238
|
+
|
239
|
+
private class MinVisitor implements Visitor {
|
240
|
+
|
241
|
+
double min;
|
242
|
+
|
243
|
+
public double getValue() {
|
244
|
+
return min;
|
245
|
+
}
|
246
|
+
|
247
|
+
@Override
|
248
|
+
public void initialize() {
|
249
|
+
min = Double.MAX_VALUE;
|
250
|
+
}
|
251
|
+
|
252
|
+
@Override
|
253
|
+
public void visit(int rowIndex, int columnIndex) {
|
254
|
+
min = Math.min(min, getDouble(rowIndex, columnIndex));
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
private class SumVisitor implements Visitor {
|
259
|
+
|
260
|
+
double sum;
|
261
|
+
|
262
|
+
public double getValue() {
|
263
|
+
return sum;
|
264
|
+
}
|
265
|
+
|
266
|
+
@Override
|
267
|
+
public void initialize() {
|
268
|
+
sum = 0;
|
269
|
+
}
|
270
|
+
|
271
|
+
@Override
|
272
|
+
public void visit(int rowIndex, int columnIndex) {
|
273
|
+
sum += getDouble(rowIndex, columnIndex);
|
274
|
+
}
|
275
|
+
}
|
276
|
+
|
277
|
+
private interface Visitor {
|
278
|
+
|
279
|
+
public double getValue();
|
280
|
+
|
281
|
+
public void initialize();
|
282
|
+
|
283
|
+
public void visit(int rowIndex, int columnIndex);
|
284
|
+
|
285
|
+
}
|
286
|
+
|
287
|
+
public static final String EXPRESSION_MARKER = "=";
|
288
|
+
private static final int MAX_LEVELS = 10;
|
289
|
+
private TableValueProvider table;
|
290
|
+
private Scanner scanner;
|
291
|
+
private int level;
|
292
|
+
private int rowIndex = -1;
|
293
|
+
private int columnIndex = -1;
|
294
|
+
|
295
|
+
public Evaluator(String expression, TableValueProvider table) {
|
296
|
+
this(expression, table, 0);
|
297
|
+
}
|
298
|
+
|
299
|
+
public Evaluator(String expression, TableValueProvider table, int level) {
|
300
|
+
this.scanner = new Scanner(expression);
|
301
|
+
this.table = table;
|
302
|
+
this.level = level;
|
303
|
+
}
|
304
|
+
|
305
|
+
public String adjustCellReferences(Operation operation, Location location, String expression, int index) {
|
306
|
+
int delta = 0;
|
307
|
+
switch (operation) {
|
308
|
+
case DELETE:
|
309
|
+
delta = -1;
|
310
|
+
break;
|
311
|
+
case INSERT:
|
312
|
+
delta = +1;
|
313
|
+
break;
|
314
|
+
default:
|
315
|
+
// do nothing
|
316
|
+
}
|
317
|
+
StringBuilder newExpression = new StringBuilder();
|
318
|
+
Scanner scanner = new Scanner(expression);
|
319
|
+
String token;
|
320
|
+
while (!(token = scanner.getNext()).isEmpty()) {
|
321
|
+
Cell cell = parseCellReference(token);
|
322
|
+
if (cell == null) {
|
323
|
+
newExpression.append(token);
|
324
|
+
} else {
|
325
|
+
switch (location) {
|
326
|
+
case COLUMN:
|
327
|
+
if (cell.getColumnName().equals("$")) {
|
328
|
+
newExpression.append(token);
|
329
|
+
} else if (operation == Operation.SAVE && cell.getColumnIndex() == index) {
|
330
|
+
newExpression.append(SpreadsheetUtilities.getCellName(cell.getRowName(), "@"));
|
331
|
+
} else if (operation == Operation.RESTORE && cell.getColumnName().equals("@")) {
|
332
|
+
newExpression.append(SpreadsheetUtilities.getCellName(cell.getRowName(), index));
|
333
|
+
} else if (cell.getColumnIndex() < index) {
|
334
|
+
newExpression.append(token);
|
335
|
+
} else {
|
336
|
+
newExpression.append(SpreadsheetUtilities.getCellName(cell.getRowName(), cell.getColumnIndex() + delta));
|
337
|
+
}
|
338
|
+
break;
|
339
|
+
case ROW:
|
340
|
+
if (cell.getRowName().equals("$")) {
|
341
|
+
newExpression.append(token);
|
342
|
+
} else if (operation == Operation.SAVE && cell.getRowIndex() == index) {
|
343
|
+
newExpression.append(SpreadsheetUtilities.getCellName("@", cell.getColumnName()));
|
344
|
+
} else if (operation == Operation.RESTORE && cell.getRowName().equals("@")) {
|
345
|
+
newExpression.append(SpreadsheetUtilities.getCellName(index, cell.getColumnName()));
|
346
|
+
} else if (cell.getRowIndex() < index) {
|
347
|
+
newExpression.append(token);
|
348
|
+
} else {
|
349
|
+
newExpression.append(SpreadsheetUtilities.getCellName(cell.getRowIndex() + delta, cell.getColumnName()));
|
350
|
+
}
|
351
|
+
break;
|
352
|
+
default:
|
353
|
+
throw new UnsupportedOperationException();
|
354
|
+
}
|
355
|
+
}
|
356
|
+
}
|
357
|
+
return newExpression.toString();
|
358
|
+
}
|
359
|
+
|
360
|
+
public double evaluateExpression() {
|
361
|
+
double left;
|
362
|
+
String operator = getOperator("-", "+", "=");
|
363
|
+
if (operator == null) {
|
364
|
+
left = evaluateSimpleExpression();
|
365
|
+
} else if (operator.equals("+") || operator.equals("=")) {
|
366
|
+
left = evaluateExpression();
|
367
|
+
} else {
|
368
|
+
left = -evaluateExpression();
|
369
|
+
}
|
370
|
+
return left;
|
371
|
+
}
|
372
|
+
|
373
|
+
public double getDouble(String stringValue, int rowIndex, int columnIndex) {
|
374
|
+
double doubleValue;
|
375
|
+
if (stringValue.startsWith("=")) {
|
376
|
+
if (level > MAX_LEVELS) {
|
377
|
+
throw new RecursiveExpressionException(stringValue);
|
378
|
+
}
|
379
|
+
Evaluator evaluator = new Evaluator(stringValue, table, level + 1);
|
380
|
+
evaluator.setRowIndex(rowIndex);
|
381
|
+
evaluator.setColumnIndex(columnIndex);
|
382
|
+
doubleValue = evaluator.evaluateExpression();
|
383
|
+
} else {
|
384
|
+
doubleValue = toDouble(stringValue);
|
385
|
+
}
|
386
|
+
return doubleValue;
|
387
|
+
}
|
388
|
+
|
389
|
+
public void setColumnIndex(int columnIndex) {
|
390
|
+
this.columnIndex = columnIndex;
|
391
|
+
}
|
392
|
+
|
393
|
+
public void setRowIndex(int rowIndex) {
|
394
|
+
this.rowIndex = rowIndex;
|
395
|
+
}
|
396
|
+
|
397
|
+
private double evaluateCellRangeFunctionReference(String token) {
|
398
|
+
Visitor visitor = null;
|
399
|
+
if (token.equalsIgnoreCase("avg")) {
|
400
|
+
visitor = new AvgVisitor();
|
401
|
+
} else if (token.equalsIgnoreCase("max")) {
|
402
|
+
visitor = new MaxVisitor();
|
403
|
+
} else if (token.equalsIgnoreCase("min")) {
|
404
|
+
visitor = new MinVisitor();
|
405
|
+
} else if (token.equalsIgnoreCase("sum")) {
|
406
|
+
visitor = new SumVisitor();
|
407
|
+
} else {
|
408
|
+
throw new IllegalArgumentException("Expected AVG, MAX, MIN or SUM. Encountered " + token);
|
409
|
+
}
|
410
|
+
visitCellRange(visitor);
|
411
|
+
return visitor.getValue();
|
412
|
+
}
|
413
|
+
|
414
|
+
private double evaluateCellReference(String token) {
|
415
|
+
Cell cell = parseCellReference(token);
|
416
|
+
if (cell == null) {
|
417
|
+
throw new IllegalArgumentException("Invalid cell reference " + token + ". Please use ColRow notation (e.g. B1).");
|
418
|
+
}
|
419
|
+
String value = table.getValue(cell.getRowIndex(), cell.getColumnIndex());
|
420
|
+
return getDouble(value, cell.getRowIndex(), cell.getColumnIndex());
|
421
|
+
}
|
422
|
+
|
423
|
+
private double evaluateFactor() {
|
424
|
+
double value;
|
425
|
+
String token = scanner.getNext();
|
426
|
+
if (isName(token)) {
|
427
|
+
String lookahead = scanner.getNext();
|
428
|
+
if (lookahead.equals("(")) {
|
429
|
+
value = evaluateCellRangeFunctionReference(token);
|
430
|
+
expect(")");
|
431
|
+
} else {
|
432
|
+
scanner.retract();
|
433
|
+
value = evaluateCellReference(token);
|
434
|
+
}
|
435
|
+
} else if (token.equals("(")) {
|
436
|
+
value = evaluateExpression();
|
437
|
+
expect(")");
|
438
|
+
} else {
|
439
|
+
value = toDouble(token);
|
440
|
+
}
|
441
|
+
return value;
|
442
|
+
}
|
443
|
+
|
444
|
+
private double evaluateSimpleExpression() {
|
445
|
+
double left = evaluateTerm();
|
446
|
+
String operator;
|
447
|
+
while ((operator = getOperator("+", "-")) != null) {
|
448
|
+
double right = evaluateTerm();
|
449
|
+
if (operator.equals("+")) {
|
450
|
+
left += right;
|
451
|
+
} else if (operator.equals("-")) {
|
452
|
+
left -= right;
|
453
|
+
}
|
454
|
+
}
|
455
|
+
return left;
|
456
|
+
}
|
457
|
+
|
458
|
+
private double evaluateTerm() {
|
459
|
+
double left = evaluateFactor();
|
460
|
+
String operator;
|
461
|
+
while ((operator = getOperator("*", "/")) != null) {
|
462
|
+
double right = evaluateFactor();
|
463
|
+
if (operator.equals("*")) {
|
464
|
+
left *= right;
|
465
|
+
} else if (operator.equals("/")) {
|
466
|
+
left /= right;
|
467
|
+
}
|
468
|
+
}
|
469
|
+
return left;
|
470
|
+
}
|
471
|
+
|
472
|
+
private void expect(String expectedToken) {
|
473
|
+
String token = scanner.getNext();
|
474
|
+
if (!token.equals(expectedToken)) {
|
475
|
+
throw new IllegalArgumentException("Expected " + expectedToken + ". Encountered " + token);
|
476
|
+
}
|
477
|
+
}
|
478
|
+
|
479
|
+
private double getDouble(int rowIndex, int columnIndex) {
|
480
|
+
String value = table.getValue(rowIndex, columnIndex);
|
481
|
+
return getDouble(value, rowIndex, columnIndex);
|
482
|
+
}
|
483
|
+
|
484
|
+
private String getOperator(String... operators) {
|
485
|
+
String token = scanner.getNext();
|
486
|
+
for (String operator : operators) {
|
487
|
+
if (token.equals(operator)) {
|
488
|
+
return operator;
|
489
|
+
}
|
490
|
+
}
|
491
|
+
scanner.retract();
|
492
|
+
return null;
|
493
|
+
}
|
494
|
+
|
495
|
+
private boolean isName(String token) {
|
496
|
+
return Character.isLetter(token.charAt(0));
|
497
|
+
}
|
498
|
+
|
499
|
+
private Cell parseCellReference(String cellName) {
|
500
|
+
Cell cell = null;
|
501
|
+
String pattern = "^([a-zA-Z\\$\\@])+([0-9\\$\\@])+$";
|
502
|
+
RegExp regularExpression = RegExp.compile(pattern);
|
503
|
+
MatchResult matchResult = regularExpression.exec(cellName);
|
504
|
+
if (matchResult != null) {
|
505
|
+
String columnName = matchResult.getGroup(1);
|
506
|
+
int columnIndex;
|
507
|
+
if (columnName.equals("$") || columnName.equals("@")) {
|
508
|
+
columnIndex = this.columnIndex;
|
509
|
+
} else {
|
510
|
+
columnIndex = SpreadsheetUtilities.getColumnIndex(columnName);
|
511
|
+
}
|
512
|
+
String rowName = matchResult.getGroup(2);
|
513
|
+
int rowIndex;
|
514
|
+
if (rowName.equals("$") || rowName.equals("@")) {
|
515
|
+
rowIndex = this.rowIndex;
|
516
|
+
} else {
|
517
|
+
rowIndex = Integer.parseInt(rowName) - 1;
|
518
|
+
}
|
519
|
+
cell = new Cell(rowName, rowIndex, columnName, columnIndex);
|
520
|
+
}
|
521
|
+
return cell;
|
522
|
+
}
|
523
|
+
|
524
|
+
private double toDouble(String token) {
|
525
|
+
double value;
|
526
|
+
try {
|
527
|
+
value = Double.parseDouble(token);
|
528
|
+
} catch (NumberFormatException e) {
|
529
|
+
value = 0;
|
530
|
+
}
|
531
|
+
return value;
|
532
|
+
}
|
533
|
+
|
534
|
+
private void visitCellRange(Visitor visitor) {
|
535
|
+
String from = scanner.getNext();
|
536
|
+
Cell fromCell = parseCellReference(from);
|
537
|
+
expect(":");
|
538
|
+
String to = scanner.getNext();
|
539
|
+
Cell toCell = parseCellReference(to);
|
540
|
+
visitor.initialize();
|
541
|
+
for (int rowIndex = fromCell.getRowIndex(); rowIndex <= toCell.getRowIndex(); rowIndex++) {
|
542
|
+
for (int columnIndex = fromCell.getColumnIndex(); columnIndex <= toCell.getColumnIndex(); columnIndex++) {
|
543
|
+
visitor.visit(rowIndex, columnIndex);
|
544
|
+
}
|
545
|
+
}
|
546
|
+
}
|
547
|
+
}
|