View Javadoc

1   /**********************************************
2    * Copyright (C) 2011 Lukas Laag
3    * This file is part of svgreal.
4    * 
5    * svgreal is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * svgreal is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   * 
15   * You should have received a copy of the GNU General Public License
16   * along with svgreal.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  package org.vectomatic.svg.edit.client.gxt.widget;
19  
20  import org.vectomatic.svg.edit.client.SvgrealApp;
21  import org.vectomatic.svg.edit.client.command.ICommandFactory;
22  import org.vectomatic.svg.edit.client.command.IFactoryInstantiator;
23  
24  import com.extjs.gxt.ui.client.event.ComponentEvent;
25  import com.extjs.gxt.ui.client.widget.menu.MenuItem;
26  import com.google.gwt.core.client.GWT;
27  
28  /**
29   * Menu item class for menu items in the command factory menu.
30   * @author laaglu
31   */
32  public class CommandFactoryMenuItem extends MenuItem {
33  	private IFactoryInstantiator<?> instantiator;
34  	public CommandFactoryMenuItem(IFactoryInstantiator<?> instantiator) {
35  		this.instantiator = instantiator;
36  		setText(instantiator.getName());
37  	}
38  	@Override
39  	protected void onClick(ComponentEvent be) {
40  		GWT.log("CommandFactoryMenuItem.onClick");
41  		// Terminate current factory if needed.
42  		ICommandFactory factory = SvgrealApp.getApp().getCommandFactorySelector().getActiveFactory();
43  		if (factory != null) {
44  			factory.stop();
45  		}
46  		instantiator.create().start(CommandFactoryMenuItem.this);
47  		super.onClick(be);
48  	}
49  }