Package com.aelitis.azureus.ui.swt.devices.add

Source Code of com.aelitis.azureus.ui.swt.devices.add.DeviceTemplateChooser$DeviceTemplateClosedListener

/**
* Created on Jul 16, 2009
*
* Copyright 2008 Vuze, Inc.  All rights reserved.
* This program 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; version 2 of the License only.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
*/
package com.aelitis.azureus.ui.swt.devices.add;

import java.util.Arrays;
import java.util.Comparator;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.*;

import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.shells.MessageBoxShell;

import com.aelitis.azureus.core.devices.DeviceTemplate;
import com.aelitis.azureus.core.devices.DeviceManager.DeviceManufacturer;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.devices.TranscodeChooser;
import com.aelitis.azureus.ui.swt.skin.*;
import com.aelitis.azureus.ui.swt.views.skin.SkinnedDialog;
import com.aelitis.azureus.ui.swt.views.skin.SkinnedDialog.SkinnedDialogClosedListener;

/**
* @author TuxPaper
* @created Jul 16, 2009
*
*/
public class DeviceTemplateChooser
{
  private DeviceTemplateClosedListener listener;
  private SkinnedDialog skinnedDialog;
  private DeviceTemplate selectedDeviceTemplate;
  private DeviceManufacturer mf;
  private SWTSkinObjectContainer soList;

  /**
   *
   */
  public DeviceTemplateChooser(DeviceManufacturer mf) {
    this.mf = mf;
  }
 
  public void open(DeviceTemplateClosedListener l) {
    this.listener = l;
    skinnedDialog = new SkinnedDialog("skin3_dlg_deviceadd_mfchooser",
        "shell", SWT.TITLE | SWT.BORDER);
   
    skinnedDialog.addCloseListener(new SkinnedDialogClosedListener() {
      public void skinDialogClosed(SkinnedDialog dialog) {
        if (listener != null) {
          listener.deviceTemplateChooserClosed(selectedDeviceTemplate);
        }
      }
    });
   
    SWTSkin skin = skinnedDialog.getSkin();
    SWTSkinObject so= skin.getSkinObject("list");
    if (so instanceof SWTSkinObjectContainer) {
      soList = (SWTSkinObjectContainer) so;
     
      createDeviceTemplateList2(soList);
    }
   
    skinnedDialog.open();
  }

  private void createDeviceTemplateList2(SWTSkinObjectContainer soList) {
    DeviceTemplate[] devices = mf.getDeviceTemplates();

    if (devices.length == 0) {
      noDevices();
      return;
    }

    Arrays.sort(devices, new Comparator<DeviceTemplate>() {
      public int compare(DeviceTemplate o1, DeviceTemplate o2) {
        return o1.getName().compareToIgnoreCase(o2.getName());
      }
    });

    Composite parent = soList.getComposite();
    if (parent.getChildren().length > 0) {
      Utils.disposeComposite(parent, false);
    }
   
    SWTSkin skin = skinnedDialog.getSkin();

    SWTSkinObjectText soInfoTitle = (SWTSkinObjectText) skin.getSkinObject("info-title");
    SWTSkinObjectText soInfoText = (SWTSkinObjectText) skin.getSkinObject("info-text");

    RowLayout layout = new RowLayout(SWT.HORIZONTAL);
    layout.spacing = 0;
    layout.marginLeft = layout.marginRight = 0;
    layout.wrap = true;
    layout.justify = true;
    layout.fill = true;
    parent.setLayout(layout);


    Listener clickListener = new Listener() {
      boolean down = false;

      public void handleEvent(Event event) {
        if (event.type == SWT.MouseDown) {
          down = true;
        } else if (event.type == SWT.MouseUp && down) {
          Widget widget = (event.widget instanceof Label)
              ? ((Label) event.widget).getParent() : event.widget;
          selectedDeviceTemplate = (DeviceTemplate) widget.getData("obj");
          if (selectedDeviceTemplate == null) {
            Debug.out("selectedDeviceTemplate is null!");
          }
          skinnedDialog.close();
          down = false;
        }
      }
    };

    GridData gridData;
    for (DeviceTemplate deviceTemplate : devices) {
      if (deviceTemplate.isAuto()) {
        continue;
      }
      String iconURL = null; // deviceTemplate.getIconURL();
      TranscodeChooser.addImageBox(parent, clickListener, null, deviceTemplate,
          iconURL, deviceTemplate.getName());
    }

    SWTSkinObjectText soTitle = (SWTSkinObjectText) skin.getSkinObject("title");
    if (soTitle != null) {
      soTitle.setTextID("devices.choose.device.title");
    }

    SWTSkinObjectText soSubTitle = (SWTSkinObjectText) skin.getSkinObject("subtitle");
    if (soSubTitle != null) {
      soSubTitle.setTextID("label.clickone");
    }

    Point computeSize = skinnedDialog.getShell().computeSize(600, SWT.DEFAULT, true);
    skinnedDialog.getShell().setSize(computeSize);
    Shell mainShell = UIFunctionsManagerSWT.getUIFunctionsSWT().getMainShell();
    Utils.centerWindowRelativeTo(skinnedDialog.getShell(), mainShell);
  }

  /**
   *
   *
   * @since 4.1.0.5
   */
  private void noDevices() {
    new MessageBoxShell(
        SWT.OK,
        "No Devices Found",
        "We couldn't find any devices.  Maybe you didn't install the Vuze Transcoder Plugin?").open(null);
    skinnedDialog.close();
  }

  public static interface DeviceTemplateClosedListener {
    public void deviceTemplateChooserClosed(DeviceTemplate deviceTemplate);
  }
}
TOP

Related Classes of com.aelitis.azureus.ui.swt.devices.add.DeviceTemplateChooser$DeviceTemplateClosedListener

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.