/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.ipv6.summary.gui.client;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.Widget;
public class Navigation extends Composite implements HasHandlers {
private static NavigationUiBinder uiBinder = GWT.create(NavigationUiBinder.class);
private EventBus m_handlerManager;
@UiField
RadioButton m_allLocations;
@UiField
RadioButton m_singleLocation;
@UiField
ListBox m_locationList;
@UiField
RadioButton m_allHosts;
@UiField
RadioButton m_singleHost;
@UiField
ListBox m_hostList;
@UiField
Anchor m_link;
interface NavigationUiBinder extends UiBinder<Widget, Navigation> {
}
public Navigation() {
initWidget(uiBinder.createAndBindUi(this));
m_handlerManager = new SimpleEventBus();
m_allHosts.setValue(true);
m_allHosts.setVisible(false);
m_singleHost.setVisible(false);
m_hostList.setVisible(false);
m_allLocations.setValue(true);
m_allLocations.setVisible(false);
m_singleLocation.setVisible(false);
m_locationList.setVisible(false);
}
@Override
public void fireEvent(GwtEvent<?> event) {
m_handlerManager.fireEvent(event);
}
public HandlerRegistration addLocationUpdateEventHandler(LocationUpdateEventHandler handler) {
return m_handlerManager.addHandler(LocationUpdateEvent.TYPE, handler);
}
public HandlerRegistration addHostUpdateEventHandler(HostUpdateEventHandler handler) {
return m_handlerManager.addHandler(HostUpdateEvent.TYPE, handler);
}
@UiHandler("m_allLocations")
public void allLocationsClick(ClickEvent event) {
hideLocationSelection();
fireEvent(new LocationUpdateEvent("All"));
}
@UiHandler("m_singleLocation")
public void singleLocationClick(ClickEvent event) {
showLocationSelection();
fireEvent(new LocationUpdateEvent(m_locationList.getItemText(m_locationList.getSelectedIndex())));
}
@UiHandler("m_locationList")
public void locationListClick(ClickEvent event) {
fireEvent(new LocationUpdateEvent(m_locationList.getItemText(m_locationList.getSelectedIndex())));
}
@UiHandler("m_allHosts")
public void allHostsClick(ClickEvent event) {
hideHostSelection();
fireEvent(new HostUpdateEvent("All"));
}
@UiHandler("m_singleHost")
public void singleHostClick(ClickEvent event) {
showHostSelection();
fireEvent(new HostUpdateEvent(m_hostList.getItemText(m_hostList.getSelectedIndex())));
}
@UiHandler("m_hostList")
public void hostListClick(ClickEvent event) {
fireEvent(new HostUpdateEvent(m_hostList.getItemText(m_hostList.getSelectedIndex())));
}
@UiHandler("m_link")
public void linkTopOpenNMSClicked(ClickEvent event) {
StringBuffer postData = new StringBuffer();
// note param pairs are separated by a '&'
// and each key-value pair is separated by a '='
postData.append(URL.encode("j_username")).append("=").append(URL.encode("ipv6"));
postData.append("&");
postData.append(URL.encode("j_password")).append("=").append(URL.encode("ipv6"));
postData.append("&");
postData.append(URL.encode("Login")).append("=").append(URL.encode("login"));
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode("/opennms/j_spring_security_check"));
builder.setHeader("Content-type", "application/x-www-form-urlencoded");
try {
builder.sendRequest(postData.toString(), new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
if(response.getStatusCode() == 200) {
Window.open("/opennms/index.jsp", "_target", null);
}else {
Window.alert("Failed to login");
}
}
@Override
public void onError(Request request, Throwable exception) {
Window.alert("Problem Logging in");
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Window.alert("Cliking link to OpenNMS");
}
public void loadLocations(List<String> locations) {
m_locationList.clear();
for(String location : locations) {
m_locationList.addItem(location);
}
}
public void loadHosts(List<String> hosts) {
m_hostList.clear();
for(String host : hosts) {
m_hostList.addItem(host);
}
}
private void showHostSelection() {
m_hostList.setVisible(true);
}
private void hideLocationSelection() {
m_locationList.setVisible(false);
}
private void showLocationSelection() {
m_locationList.setVisible(true);
}
private void hideHostSelection() {
m_hostList.setVisible(false);
}
}