/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2010-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.features.dashboard.client; import java.util.ArrayList; import java.util.List; import org.opennms.features.dashboard.client.dnd.GridViewDragHandler; import org.opennms.features.dashboard.client.layout.GridDesktopPanel; import org.opennms.features.dashboard.client.layout.VerticalPanelWithSpacer; import org.opennms.features.dashboard.client.portlet.GridWindowPanel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.allen_sauer.gwt.dnd.client.PickupDragController; import com.allen_sauer.gwt.dnd.client.drop.HorizontalPanelDropController; import com.allen_sauer.gwt.dnd.client.drop.VerticalPanelDropController; /** * author: Tharindu Munasinghe (tharindumunasinghe@gmail.com) * org.opennms.features.dashboard */ @Deprecated public final class GridViewWidget { private static final String CSS_GRID_PANEL = "demo-gridview"; private static final String CSS_GRID_PANEL_COLUMN_COMPOSITE = "demo-gridview-column-composite"; private static final String CSS_GRID_PANEL_CONTAINER = "demo-gridview-container"; private static final String CSS_GRID_PANEL_HEADING = "demo-gridview-heading"; private static final String CSS_GRID_PANEL_WIDGET = "demo-gridview-widget"; private static final int COLUMNS = 3; private static final int SPACING = 1; private GridDesktopPanel boundaryPanel; private PickupDragController columnDragController; private PickupDragController widgetDragController; private HorizontalPanel bodyPanel; private HorizontalPanelDropController columnDropController; private List<VerticalPanel> columnList; private List<GridWindowPanel> windowList; public GridViewWidget( GridDesktopPanel gridPanel ) { this( new GridViewDragHandler(), gridPanel ); } public GridViewWidget( GridViewDragHandler demoDragHandler, GridDesktopPanel gridPanel ) { // use the boundary panel as this composite's widget boundaryPanel = gridPanel; boundaryPanel.setSize( "100%", "100%" ); boundaryPanel.setStyleName( CSS_GRID_PANEL ); // initialize our column drag controller columnDragController = new PickupDragController( boundaryPanel, false ); columnDragController.setBehaviorMultipleSelection( false ); columnDragController.addDragHandler( demoDragHandler ); // initialize our widget drag controller widgetDragController = new PickupDragController( boundaryPanel, false ); widgetDragController.setBehaviorMultipleSelection( false ); widgetDragController.addDragHandler( demoDragHandler ); // initialize horizontal panel to hold our columns bodyPanel = new HorizontalPanel(); bodyPanel.setStyleName( CSS_GRID_PANEL_CONTAINER ); bodyPanel.setSpacing( SPACING ); boundaryPanel.add( bodyPanel ); // initialize our column drop controller columnDropController = new HorizontalPanelDropController( bodyPanel ); columnDragController.registerDropController( columnDropController ); columnList=new ArrayList<VerticalPanel>(); windowList=new ArrayList<GridWindowPanel>(); init(); } public void init() { for ( int col = 0; col < COLUMNS; col++ ) { addNewColumn(); } } public VerticalPanel addNewColumn() { // initialize a vertical panel to hold the heading and a second vertical // panel VerticalPanel columnCompositePanel = new VerticalPanel(); columnCompositePanel.setStyleName( CSS_GRID_PANEL_COLUMN_COMPOSITE ); bodyPanel.add( columnCompositePanel ); VerticalPanel verticalPanel = new VerticalPanelWithSpacer(); verticalPanel.setStyleName( CSS_GRID_PANEL_CONTAINER ); verticalPanel.setSpacing( SPACING ); columnList.add( verticalPanel ); // initialize a widget drop controller for the current column VerticalPanelDropController widgetDropController = new VerticalPanelDropController( verticalPanel ); widgetDragController.registerDropController( widgetDropController ); // Put together the column pieces Label heading = new Label( ); heading.setStyleName( CSS_GRID_PANEL_HEADING ); columnCompositePanel.add( heading ); columnCompositePanel.add( verticalPanel ); // make the column draggable by its heading columnDragController.makeDraggable( columnCompositePanel, heading ); return verticalPanel; } public int addNewWidget(Widget visItem) { if ( !columnList.isEmpty() ) { int index=windowList.size()%columnList.size(); return addNewWidget( index, visItem ); }else { addNewColumn(); return addNewWidget( columnList.size() - 1, visItem ); } } public int addNewWidget(int column, Widget visItem) { if ( columnList.size()>column ) { VerticalPanel verticalPanel = columnList.get( column ); GridWindowPanel widget = new GridWindowPanel(visItem); widget.setWidget( ); widget.setStyleName( CSS_GRID_PANEL_WIDGET ); verticalPanel.add( widget ); windowList.add( widget ); // make the widget draggable widgetDragController.makeDraggable( widget, widget.getHeader() ); return windowList.size()-1; } return -1; } public void setContent( int index ){ if ( index>=0 && index<windowList.size() ) { windowList.get( index ).setWidget( ); } } public void closeWindow(int window) { if ( window>=0 && window<windowList.size() ) { windowList.get( window ).removeFromParent(); windowList.remove( window ); } } public void setHeaderCaption(int window, String text) { if ( window>=0 && window<windowList.size() ) { windowList.get( window ).setHeaderCaption( text ); } } public void selectWindow(int window) { if ( window>=0 && window<windowList.size() ) { windowList.get( window ).selectItem(); } } public void clearGrid() { for ( GridWindowPanel window : windowList ) { widgetDragController.makeNotDraggable( window ); window.removeFromParent(); } windowList.clear(); } }