dynamictoolbarbean.java

来自「OperaMasks是一种基于J2EE的Web开发技术」· Java 代码 · 共 192 行

JAVA
192
字号
package demo;

import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItems;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import org.operamasks.faces.annotation.ManagedBean;
import org.operamasks.faces.annotation.ManagedBeanScope;
import org.operamasks.faces.component.form.impl.UICombo;
import org.operamasks.faces.component.widget.UIButton;
import org.operamasks.faces.component.widget.UISeparator;
import org.operamasks.faces.component.widget.UIToolBar;
import org.operamasks.faces.component.widget.menu.UICommandMenuItem;
import org.operamasks.faces.component.widget.menu.UILinkMenuItem;
import org.operamasks.faces.component.widget.menu.UIMenu;
import org.operamasks.faces.util.UIComponentFactory;

@ManagedBean(name="DynamicToolBar", scope=ManagedBeanScope.SESSION)
public class DynamicToolBarBean {
    private SelectItem[] colors = {
            new SelectItem("Red", "Red Color"),
            new SelectItem("Green", "Green Color"),
            new SelectItem("Blue", "Blue Color")
        };
    
	private UIToolBar toolbar;
	private String response;
	private int seperatorNum = 0;

	public UIToolBar getToolbar() {
		return toolbar;
	}

	public void setToolbar(UIToolBar toolbar) {
		this.toolbar = toolbar;
	}

	public String getResponse() {
		return response;
	}

	public void setResponse(String response) {
		this.response = response;
	}
	
	public void addMenu() {
		for (UIComponent component : toolbar.getChildren()) {
			if (component instanceof UIMenu) {
				response = "Menu has already added.";
				
				return;
			}
		}
		
		FacesContext context = FacesContext.getCurrentInstance();
		
		UIComponentFactory factory = new UIComponentFactory();
		
		UICommandMenuItem text = createMenuItem(context, factory, "鏂囨湰鏂囦欢");
		text.setId("m_text");
		UICommandMenuItem xml = createMenuItem(context, factory, "XML鏂囦欢");
		xml.setId("m_xml");
		UICommandMenuItem java = createMenuItem(context, factory, "Java鏂囦欢");
		java.setId("m_java");

		UIMenu _new = createMenu(context, factory, "鏂板缓", "images/new.gif");
		_new.setId("m_new");
		_new.getChildren().add(text);
		_new.getChildren().add(xml);
		_new.getChildren().add(java);
		
		UICommandMenuItem open = createCommandMenuItem(context, factory, "鎵撳紑", "images/open.gif");
		open.setId("m_open");
		UICommandMenuItem save = createCommandMenuItem(context, factory, "淇濆瓨", "images/save.gif");
		save.setId("m_save");
		UISeparator separator = createSeparator(context, factory);
		UILinkMenuItem close = createLinkMenuItem(context, factory, "鍏抽棴", "dynamicToolbar.jsf", "return confirm('Are you sure?')");
		close.setId("m_close");
		

		UIMenu file = createMenu(context, factory, "File", null, "#{DynamicToolBar.menuAction}");
		file.setId("m_file");
		file.getChildren().add(_new);
		file.getChildren().add(open);
		file.getChildren().add(save);
		file.getChildren().add(separator);
		file.getChildren().add(close);
		
		toolbar.addItem(file);
	}
	
	private UILinkMenuItem createLinkMenuItem(FacesContext context,
			UIComponentFactory factory, String label, String value,
			String onclick) {
		factory.clear();
		factory.addAttribute("label", label).
				addAttribute("value", value).
				addAttribute("onclick", onclick);

		return factory.createLinkMenuItem(context);
	}

	private UISeparator createSeparator(FacesContext context,
			UIComponentFactory factory) {
		factory.clear();
		UISeparator separator = (UISeparator)factory.createComponent(context, UISeparator.COMPONENT_TYPE);
		separator.setId("spa_" + this.seperatorNum++);
		return separator;
	}

	private UIMenu createMenu(FacesContext context, UIComponentFactory factory,
			String label, String image) {
		return createMenu(context, factory, label, image, null);
	}
	
	private UIMenu createMenu(FacesContext context, UIComponentFactory factory,
			String label, String image, String action) {
		factory.clear();
		
		factory.addAttribute("label", label);
		if (image != null)
			factory.addAttribute("image", image);
		if (action != null)
			factory.addAttribute("action", action);

		return factory.createMenu(context);
	}

	private UICommandMenuItem createMenuItem(FacesContext context,
			UIComponentFactory factory, String label) {
		factory.clear();
		factory.addAttribute("label", label);
		
		return factory.createCommandMenuItem(context);
	}
	
	private UICommandMenuItem createCommandMenuItem(FacesContext context,
			UIComponentFactory factory, String label, String image) {
		factory.clear();
		
		factory.addAttribute("label", label);
		if (image != null)
			factory.addAttribute("image", image);
		
		return factory.createCommandMenuItem(context);
	}

	public void addButton() {
		for (UIComponent component : toolbar.getChildren()) {
			if (component instanceof UIButton) {
				response = "Button has already added.";
				return;
			}
		}
		
		UIButton btn = createButton();
		btn.setId("click_me");

		toolbar.addItem(btn);
	}

	private UIButton createButton() {
		UIButton btn = (UIButton) FacesContext.getCurrentInstance()
				.getApplication().createComponent(UIButton.COMPONENT_TYPE);
		btn.setValue("Click me");
		btn.setImage("images/example.gif");
		btn.setActionExpression(FacesContext.getCurrentInstance()
				.getApplication().getExpressionFactory()
				.createMethodExpression(
						FacesContext.getCurrentInstance().getELContext(),
						"#{DynamicToolBar.click}", Void.class, new Class[] {}));
		return btn;
	}

	private boolean isNotMenu(UIComponent component) {
		return (!(component instanceof UIMenu) && !(component instanceof UICommandMenuItem));
	}

	public void addCombo() {
		for (UIComponent component : toolbar.getChildren()) {
			if (component instanceof UICombo) {
				response = "Combo has already added.";
				
				return;
			}
		}
		
		UIComponentFactory factory = new UIComponentFactory().
						addAttribute("valueChangeListener", "#{DynamicToolBar.valueChange}").
						addAttribute("emptyText", "璇烽

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?