Package com.gloopics.g3viewer.client

Source Code of com.gloopics.g3viewer.client.View

package com.gloopics.g3viewer.client;

import java.util.ArrayList;
import java.util.List;

import com.allen_sauer.gwt.dnd.client.DragController;
import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.gloopics.g3viewer.client.dnddesktop.DesktopDropFile;
import com.gloopics.g3viewer.client.dnddesktop.DesktopDroppableWidget;
import com.gloopics.g3viewer.client.dnddesktop.DndDesktopFactory;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ContextMenuEvent;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.gears.client.desktop.File;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;

public class View extends FlowPanel implements DesktopDroppableWidget{

  /**
   * the current album being viewed
   */
  private Album m_Album;
 
 
  /**
   * the list of drop zones
   */
  private final List<DropZoneController> m_DropZones
    = new ArrayList<DropZoneController>();
 
  private final G3Viewer m_Container;
 
  public View(G3Viewer a_Container){
    m_Container = a_Container;
    if (m_Container.isUploadEnabled())
    {
      ((DndDesktopFactory)GWT.create(DndDesktopFactory.class)).getInstance(this);
    }
  }
 
 
  private void clearView(){
    PickupDragController pdc = m_Container.getDragController();
      if (m_DropZones.size() > 0){
        for (DropZoneController dropController : m_DropZones){
          pdc.unregisterDropController(dropController);
        }
        m_DropZones.clear();
      }
     
      for (Widget widget : getChildren()){
        if (widget instanceof Item){
          ((Item)widget).hidding();
        }
      }
      pdc.clearSelection();
      clear();
    }
 
  public void setAlbum(Album a_Album){
   
      clearView();
      m_Album = a_Album;     
      Item last = null;
      for (Item item : a_Album.getItems())
      {
        if (a_Album.isManualSort()){
          addDropZone(a_Album, item, true);
        }
       
        addToView(item);
       
        item.showing();
       
        last = item;
      }
      if (a_Album.isManualSort() && (last != null)){
        addDropZone(a_Album, last, false);
      }
     
      Loading.getInstance().endLoading();

  }
   
    private void addDropZone(Album a_Parent,Item a_CompareTo, boolean a_Before){
      HTML drop = new HTML();
      drop.addStyleName("DropZone");
      DropZoneController dzp = new DropZoneController(a_Parent, drop, a_CompareTo, a_Before);
      m_Container.getDragController().registerDropController(dzp);
      m_DropZones.add(dzp);
      addToView(drop);
    }

    public void addToView(Widget a_Widget){
      add(a_Widget);
    }
   
    public void replaceInView(UploadFile a_Remove, Item a_Insert){
      int index = getWidgetIndex(a_Remove);
      insert(a_Insert, index);
      remove(a_Remove);
    }
   
    public void removeFromView(Widget a_Widget){
      remove(a_Widget);
    }
   
    public Album getCurrentAlbum(){
      return m_Album;
    }


  @Override
  public void dropFiles(File[] aFile) {
    if (m_Album != null){
      m_Album.uploadFiles(aFile);
    }
  }


  @Override
  public Widget getActualWidget() {
    return this;
  }
 
  public void showPopupMenu(ContextMenuEvent event){
    final PopupPanel popupPanel = new PopupPanel(true);   
    popupPanel.setAnimationEnabled(true);
    popupPanel.setStyleName("popup");
    MenuBar popupMenuBar = new MenuBar(true);
   
    MenuItem deleteItem = new MenuItem("Delete Selected Items", true, new Command() {
     
      @Override
      public void execute() {
        popupPanel.hide();
       
        m_Container.doConfirm("Are you sure you wish to delete selected items?", new ConfirmDialogBox.ConfirmCallBack() {
         
          public void ok() {
            JSONArray jsa = Utils.extractIds(m_Container.getDragController().getDragContext());
           
            m_Container.doJSONRequest(G3Viewer.DELETE_ALL_URL + "?sourceids=" + jsa.toString() , new HttpSuccessHandler() {
              public void success(JSONValue aValue) {
                final List<Widget> widgets = m_Container.getDragController().getSelectedWidgets();
                Item i;
                for (Widget widget: widgets){
                  i = (Item)widget;
                  removeFromView(i);
                  i.removeLinkedAlbum();
                }
               
              }}, true, true);
          }
        });
       
      }
    });
    deleteItem.addStyleName("popup-item");
    popupMenuBar.addItem(deleteItem);
   
    popupMenuBar.setVisible(true);
    popupPanel.add(popupMenuBar);
   
      MenuItem rotateAllCW = new MenuItem("Rotate All Clockwise", true, new Command() {
        @Override
        public void execute() {
          // change all thumbs into loading
          final List<Widget> widgets = m_Container.getDragController().getSelectedWidgets();
         
          for (Widget widget: widgets){
            final Item i = ((Item)widget);
            if (i.isPhoto())
            {
              i.setLoadingThumb();
            }
         
            m_Container.doJSONRequest(G3Viewer.ROTATE_URL + i.getID() + "/cw",
              new HttpSuccessHandler() {
           
              public void success(JSONValue aValue) {
                i.updateImages(aValue);
              }
            },false,true);
          }
          popupPanel.hide();
        }
      });
   
      rotateAllCW.addStyleName("popup-item");
      popupMenuBar.addItem(rotateAllCW);

     
      MenuItem rotateAllCCW = new MenuItem("Rotate All Counter-Clockwise", true, new Command() {
        @Override
        public void execute() {
          // change all thumbs into loading
          final List<Widget> widgets = m_Container.getDragController().getSelectedWidgets();
         
          for (Widget widget: widgets){
            final Item i = ((Item)widget);
            if (i.isPhoto())
            {
              i.setLoadingThumb();
            }
            m_Container.doJSONRequest(G3Viewer.ROTATE_URL + i.getID() + "/cw",
              new HttpSuccessHandler() {
           
              public void success(JSONValue aValue) {
                i.updateImages(aValue);
              }
            },false,true);
          }
          popupPanel.hide();
        }
      });
   
      rotateAllCW.addStyleName("popup-item");
      popupMenuBar.addItem(rotateAllCCW);
     
    int x = DOM.eventGetClientX((Event)event.getNativeEvent());
    int y = DOM.eventGetClientY((Event)event.getNativeEvent());
    popupPanel.setPopupPosition(x, y);
   
    popupPanel.show();   

  }
}
TOP

Related Classes of com.gloopics.g3viewer.client.View

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.