/* * OneCMDB, an open source configuration management project. * Copyright 2007, Lokomo Systems AB, and individual contributors * as indicated by the @authors tag. See the copyright.txt in the * distribution for a full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.onecmdb.ui.gwt.toolkit.client.view.screen.ci; import org.onecmdb.ui.gwt.toolkit.client.control.OneCMDBConnector; import org.onecmdb.ui.gwt.toolkit.client.control.OneCMDBUtils; import org.onecmdb.ui.gwt.toolkit.client.control.input.CIAttributeValueInputControl; import org.onecmdb.ui.gwt.toolkit.client.control.tree.InheritanceTreeControl; import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_CiBean; import org.onecmdb.ui.gwt.toolkit.client.view.ci.CIDisplayNameWidget; import org.onecmdb.ui.gwt.toolkit.client.view.ci.CIIconDisplayNameWidget; import org.onecmdb.ui.gwt.toolkit.client.view.popup.DragablePopup; import org.onecmdb.ui.gwt.toolkit.client.view.screen.OneCMDBBaseScreen; import org.onecmdb.ui.gwt.toolkit.client.view.tree.CITreeWidget; import com.google.gwt.user.client.History; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.DockPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TreeItem; import com.google.gwt.user.client.ui.TreeListener; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; public class MoveCIScreen extends OneCMDBBaseScreen { private GWT_CiBean ci; private GWT_CiBean newTemplate; private GWT_CiBean template; private HorizontalPanel hPanel; public MoveCIScreen() { super(); hPanel = new HorizontalPanel(); dockPanel.add(hPanel, DockPanel.NORTH); initWidget(dockPanel); setTitleText("Classify"); } public void load(String objectType, Long objectId) { OneCMDBConnector.getCIFromAlias(objectType, new AsyncCallback() { public void onFailure(Throwable caught) { setErrorText("ERROR:" + caught); } public void onSuccess(Object result) { if (result instanceof GWT_CiBean) { ci = (GWT_CiBean)result; OneCMDBConnector.getCIFromAlias(ci.getDerivedFrom(), new AsyncCallback() { public void onFailure(Throwable caught) { setErrorText("ERROR:" + caught); } public void onSuccess(Object result) { if (result instanceof GWT_CiBean) { template = (GWT_CiBean)result; update(); } } }); } } }); } protected void update() { setTitleWidget(new CIIconDisplayNameWidget(template)); hPanel.clear(); VerticalPanel vPanel = new VerticalPanel(); vPanel.setStyleName("mdv-form"); vPanel.add(new HTML("<h3>Classify CI <i>" + ci.getDisplayName() + "</i><h3>")); HorizontalPanel currentPanel = new HorizontalPanel(); currentPanel.add(new Label("Current Template: ")); currentPanel.add(new CIIconDisplayNameWidget(template)); vPanel.add(currentPanel); final HorizontalPanel newPanel = new HorizontalPanel(); final HTML newTemplateHTML = new HTML("<a href='javascript:;'>Change to Template </a>"); newPanel.add(newTemplateHTML); newTemplateHTML.addClickListener(new ClickListener() { public void onClick(Widget sender) { final DragablePopup popup = new DragablePopup("Select template", false); InheritanceTreeControl control = new InheritanceTreeControl(ci.getDerivedFrom()); control.setFilterInstances(Boolean.TRUE); control.setTreeListener(new TreeListener() { public void onTreeItemSelected(TreeItem item) { if (item.getUserObject() instanceof GWT_CiBean) { newPanel.clear(); newTemplate = (GWT_CiBean)item.getUserObject(); newPanel.add(newTemplateHTML); newPanel.add(new CIIconDisplayNameWidget(newTemplate)); popup.hide(); } } public void onTreeItemStateChanged(TreeItem item) { // TODO Auto-generated method stub } }); CITreeWidget templateTreeWidget = new CITreeWidget(control); popup.setContent(templateTreeWidget); int left = sender.getAbsoluteLeft() + sender.getOffsetWidth(); int top = sender.getAbsoluteTop() + sender.getOffsetHeight(); popup.setPopupPosition(left, top); popup.show(); } }); vPanel.add(newPanel); HorizontalPanel bpanel = new HorizontalPanel(); Button cancel = new Button("CANCEL"); cancel.addClickListener(new ClickListener() { public void onClick(Widget sender) { History.back(); } }); Button ok = new Button("OK"); ok.addClickListener(new ClickListener() { public void onClick(Widget sender) { CIAttributeValueInputControl control = new CIAttributeValueInputControl(ci); control.getLocal().setDerivedFrom(newTemplate.getAlias()); control.commit(new AsyncCallback() { public void onFailure(Throwable caught) { setErrorText("ERROR: " + caught); } public void onSuccess(Object result) { History.back(); } }); } }); bpanel.add(ok); bpanel.add(cancel); vPanel.add(bpanel); hPanel.add(vPanel); } }