package com.evolveum.midpoint.web.page.admin.orgs; import java.util.List; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.dialog.Popupable; import com.evolveum.midpoint.web.component.util.SelectableBean; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; public class OrgTreeAssignablePanel extends BasePanel<OrgType> implements Popupable{ private static final long serialVersionUID = 1L; private static final Trace LOGGER = TraceManager.getTrace(OrgTreeAssignablePanel.class); public static final String PARAM_ORG_RETURN = "org"; private static final String DOT_CLASS = OrgTreeAssignablePanel.class.getName() + "."; private static final String ID_ORG_TABS = "orgTabs"; private static final String ID_ASSIGN = "assign"; private boolean selectable; public OrgTreeAssignablePanel(String id, boolean selectable, PageBase parentPage) { super(id); this.selectable = selectable; setParent(parentPage); initLayout(); } private void initLayout() { AbstractOrgTabPanel tabbedPanel = new AbstractOrgTabPanel(ID_ORG_TABS, getPageBase()) { private static final long serialVersionUID = 1L; @Override protected Panel createTreePanel(String id, Model<String> model, PageBase pageBase) { OrgTreePanel panel = new OrgTreePanel(id, model, selectable) { private static final long serialVersionUID = 1L; @Override protected void selectTreeItemPerformed(SelectableBean<OrgType> selected, AjaxRequestTarget target) { onItemSelect(selected, target); } }; panel.setOutputMarkupId(true); return panel; } }; tabbedPanel.setOutputMarkupId(true); add(tabbedPanel); AjaxButton assignButton = new AjaxButton(ID_ASSIGN, getPageBase().createStringResource("Button.assign")) { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { AbstractOrgTabPanel orgPanel = (AbstractOrgTabPanel) getParent().get(ID_ORG_TABS); OrgTreePanel treePanel = (OrgTreePanel) orgPanel.getPanel(); List<OrgType> selectedOrgs = treePanel.getSelectedOrgs(); assignSelectedOrgPerformed(selectedOrgs, target); } }; assignButton.setOutputMarkupId(true); assignButton.add(new VisibleEnableBehaviour() { private static final long serialVersionUID = 1L; @Override public boolean isVisible() { return selectable; } }); add(assignButton); } protected void assignSelectedOrgPerformed(List<OrgType> selectedOrgs, AjaxRequestTarget target) { } protected void onItemSelect(SelectableBean<OrgType> selected, AjaxRequestTarget target) { } @Override public int getWidth() { return 900; } @Override public int getHeight() { return 500; } @Override public StringResourceModel getTitle() { return new StringResourceModel("OrgTreeAssignablePanel.selectOrg"); } @Override public Component getComponent() { return this; } }