Package ch.fusun.baron.basic.client.ui.accountproperty

Source Code of ch.fusun.baron.basic.client.ui.accountproperty.CoatOfArmsAccountProperty

package ch.fusun.baron.basic.client.ui.accountproperty;

import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

import ch.fusun.baron.basic.client.ui.Activator;
import ch.fusun.baron.basic.command.SetCoatOfArmsCommand;
import ch.fusun.baron.clientapp.login.AccountProperty;
import ch.fusun.baron.coatofarms.ui.COAColor;
import ch.fusun.baron.coatofarms.ui.CoatOfArmsData;
import ch.fusun.baron.coatofarms.ui.background.Backgrounds;
import ch.fusun.baron.coatofarms.ui.background.COABackground;
import ch.fusun.baron.core.command.GameCommand;
import ch.fusun.baron.core.rmi.User;
import ch.fusun.baron.player.Dynasty;

/**
* Select the coat of arms for the {@link Dynasty}
*/
public class CoatOfArmsAccountProperty implements AccountProperty {

  private transient ComboViewer layoutCombo;
  private transient ComboViewer color1Combo;
  private transient ComboViewer color2Combo;

  private CoatOfArmsData data;

  /**
   * Empty constructor
   */
  public CoatOfArmsAccountProperty() {
  }

  @Override
  public void createUi(Composite parentArea) {

    new Label(parentArea, SWT.NONE).setText("Background:");
    layoutCombo = new ComboViewer(parentArea, SWT.READ_ONLY);
    layoutCombo.setContentProvider(new ArrayContentProvider());
    layoutCombo.setInput(Backgrounds.values());
    layoutCombo.setSelection(new StructuredSelection(
        Backgrounds.VerticallyDivided));

    new Label(parentArea, SWT.NONE).setText("Color 1:");
    color1Combo = new ComboViewer(parentArea, SWT.READ_ONLY);
    color1Combo.setContentProvider(new ArrayContentProvider());
    color1Combo.setInput(COAColor.values());
    color1Combo.setSelection(new StructuredSelection(COAColor.AZURE));

    new Label(parentArea, SWT.NONE).setText("Color 2:");
    color2Combo = new ComboViewer(parentArea, SWT.READ_ONLY);
    color2Combo.setContentProvider(new ArrayContentProvider());
    color2Combo.setInput(COAColor.values());
    color2Combo.setSelection(new StructuredSelection(COAColor.OR));

    new Label(parentArea, SWT.NONE).setText("Preview:");
    final Label coa = new Label(parentArea, SWT.NONE);
    coa.setImage(Activator.getImageForCOA(getData()));

    ISelectionChangedListener listener = new ISelectionChangedListener() {

      @Override
      public void selectionChanged(SelectionChangedEvent event) {
        data = getData();
        coa.setImage(Activator.getImageForCOA(data));
        coa.redraw();
      }
    };

    layoutCombo.addSelectionChangedListener(listener);
    color1Combo.addSelectionChangedListener(listener);
    color2Combo.addSelectionChangedListener(listener);
    data = getData();
  }

  @Override
  public GameCommand getCommand(User user) {
    return new SetCoatOfArmsCommand(data, user);
  }

  private CoatOfArmsData getData() {
    COABackground background = ((Backgrounds) ((StructuredSelection) layoutCombo
        .getSelection()).getFirstElement()).createLayout(
        (COAColor) ((StructuredSelection) color1Combo.getSelection())
            .getFirstElement(),
        (COAColor) ((StructuredSelection) color2Combo.getSelection())
            .getFirstElement());
    CoatOfArmsData data = new CoatOfArmsData(background, null);
    return data;
  }

}
TOP

Related Classes of ch.fusun.baron.basic.client.ui.accountproperty.CoatOfArmsAccountProperty

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.