Package de.hwrberlin.it11.tsp.gui.dialog

Source Code of de.hwrberlin.it11.tsp.gui.dialog.ColorDialog$ChosenColorListener

/**
* Copyright (c) 2012 mops� Productions
*/
package de.hwrberlin.it11.tsp.gui.dialog;

import net.miginfocom.swt.MigLayout;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import de.hwrberlin.it11.tsp.constant.Colors;
import de.hwrberlin.it11.tsp.constant.Images;
import de.hwrberlin.it11.tsp.gui.widgets.AntButton;
import de.hwrberlin.it11.tsp.gui.widgets.AntComposite;
import de.hwrberlin.it11.tsp.model.AntProject;

/**
* Dieser Dialog dient zum Ausw�hlen einer Farbe. Als Farben werden dabei alle Basisfarben der Colors Klasse angeboten.
*/
public class ColorDialog extends AAntDialog {

  /** Der R�ckgabewert dieses Dialogs */
  private Color _result;



  /**
   * Erstellt einen neuen ColorDialog.
   *
   * @param pParent
   *            die Parent-Shell
   * @param pProject
   *            das AntProject des zu erstellenden Dialoges
   */
  public ColorDialog(Shell pParent, AntProject pProject) {
    super(pParent, pProject);
  }



  /**
   * �ffnet diesen Dialog und bingt ihn in den Vordergrund.
   *
   * @return die ausgew�hlte Farbe oder null, wenn keine Farbe ausgew�hlt wurde
   */
  public Color open() {
    Shell parent = getParent();
    final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
    shell.setText("Farbe w�hlen");
    shell.setImage(Images.COLOR_SWATCH);
    shell.setLayout(new MigLayout("fill, wrap 4"));
    shell.setLayoutData("hmin pref, wmin pref");

    AntComposite black = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    black.setBackground(Colors.BLACK);
    black.getComposite().setLayoutData("height 20!, width 50!");
    black.getComposite().addMouseListener(new ChosenColorListener(black));

    AntComposite darkGrey = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkGrey.setBackground(Colors.DARK_GREY);
    darkGrey.getComposite().setLayoutData("height 20!, width 50!");
    darkGrey.getComposite().addMouseListener(new ChosenColorListener(darkGrey));

    AntComposite grey = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    grey.setBackground(Colors.GREY);
    grey.getComposite().setLayoutData("height 20!, width 50!");
    grey.getComposite().addMouseListener(new ChosenColorListener(grey));

    AntComposite white = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    white.setBackground(Colors.WHITE);
    white.getComposite().setLayoutData("height 20!, width 50!");
    white.getComposite().addMouseListener(new ChosenColorListener(white));

    AntComposite darkBlue = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkBlue.setBackground(Colors.DARK_BLUE);
    darkBlue.getComposite().setLayoutData("height 20!, width 50!");
    darkBlue.getComposite().addMouseListener(new ChosenColorListener(darkBlue));

    AntComposite blue = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    blue.setBackground(Colors.BLUE);
    blue.getComposite().setLayoutData("height 20!, width 50!");
    blue.getComposite().addMouseListener(new ChosenColorListener(blue));

    AntComposite darkCyan = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkCyan.setBackground(Colors.DARK_CYAN);
    darkCyan.getComposite().setLayoutData("height 20!, width 50!");
    darkCyan.getComposite().addMouseListener(new ChosenColorListener(darkCyan));

    AntComposite cyan = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    cyan.setBackground(Colors.CYAN);
    cyan.getComposite().setLayoutData("height 20!, width 50!");
    cyan.getComposite().addMouseListener(new ChosenColorListener(cyan));

    AntComposite darkRed = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkRed.setBackground(Colors.DARK_RED);
    darkRed.getComposite().setLayoutData("height 20!, width 50!");
    darkRed.getComposite().addMouseListener(new ChosenColorListener(darkRed));

    AntComposite red = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    red.setBackground(Colors.RED);
    red.getComposite().setLayoutData("height 20!, width 50!");
    red.getComposite().addMouseListener(new ChosenColorListener(red));

    AntComposite darkMagenta = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkMagenta.setBackground(Colors.DARK_MAGENTA);
    darkMagenta.getComposite().setLayoutData("height 20!, width 50!");
    darkMagenta.getComposite().addMouseListener(new ChosenColorListener(darkMagenta));

    AntComposite magenta = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    magenta.setBackground(Colors.MAGENTA);
    magenta.getComposite().setLayoutData("height 20!, width 50!");
    magenta.getComposite().addMouseListener(new ChosenColorListener(magenta));

    AntComposite darkGreen = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkGreen.setBackground(Colors.DARK_GREEN);
    darkGreen.getComposite().setLayoutData("height 20!, width 50!");
    darkGreen.getComposite().addMouseListener(new ChosenColorListener(darkGreen));

    AntComposite green = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    green.setBackground(Colors.GREEN);
    green.getComposite().setLayoutData("height 20!, width 50!");
    green.getComposite().addMouseListener(new ChosenColorListener(green));

    AntComposite darkYellow = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    darkYellow.setBackground(Colors.DARK_YELLOW);
    darkYellow.getComposite().setLayoutData("height 20!, width 50!");
    darkYellow.getComposite().addMouseListener(new ChosenColorListener(darkYellow));

    AntComposite yellow = new AntComposite(new Composite(shell, SWT.BORDER), getProject());
    yellow.setBackground(Colors.YELLOW);
    yellow.getComposite().setLayoutData("height 20!, width 50!");
    yellow.getComposite().addMouseListener(new ChosenColorListener(yellow));

    Composite buttonComp = new Composite(shell, SWT.NONE);
    buttonComp.setLayout(new MigLayout("wrap 2, ins 0", "[50%][50%]"));
    buttonComp.setLayoutData("hmin 0, wmin 0, growx, spanx");

    AntButton confirm = new AntButton(new Button(buttonComp, SWT.PUSH), getProject());
    confirm.getButton().setText("Speichern");
    confirm.getButton().setLayoutData("hmin pref, wmin pref, grow");
    confirm.setTooltipText("W�hlt die angeklickte Farbe aus und schlie�t den Dialog.");
    confirm.getButton().addSelectionListener(new SelectionAdapter() {

      @Override
      public void widgetSelected(SelectionEvent pE) {
        shell.close();
      }
    });

    AntButton cancel = new AntButton(new Button(buttonComp, SWT.PUSH), getProject());
    cancel.getButton().setText("Abbrechen");
    cancel.getButton().setLayoutData("hmin pref, wmin pref, grow");
    cancel.setTooltipText("Schlie�t den Dialog ohne eine Farbe auszuw�hlen.");
    cancel.getButton().addSelectionListener(new SelectionAdapter() {

      @Override
      public void widgetSelected(SelectionEvent pE) {
        _result = null;
        shell.close();
      }
    });

    shell.pack();
    shell.open();
    Display display = parent.getDisplay();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    return _result;
  }



  /**
   * Dieser Listener erbt von MouseAdapter und ist dazu da, bei einem Klick auf den Receiver die aktuell ausgew�hlte Farbe zu setzen.
   *
   * @author Patrick Szostack
   *
   */
  private class ChosenColorListener extends MouseAdapter {

    /** Das AntComposite, das diese Instanz repr�sentiert */
    private AntComposite _composite;



    /**
     * Erstellt einen neuen ChosenColorListener.
     *
     * @param pColor
     *            die Farbe, die diese Instanz repr�sentiert
     */
    public ChosenColorListener(AntComposite pComposite) {
      _composite = pComposite;
    }



    @Override
    public void mouseDown(MouseEvent pE) {
      if (pE.button == 1) {
        _result = _composite.getBackground();
      }
    }

  }

}
TOP

Related Classes of de.hwrberlin.it11.tsp.gui.dialog.ColorDialog$ChosenColorListener

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.