package guis;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import core.Main;
import entity.ClassEntity;
import entity.DNDEntity;
import entity.RaceEntity;
public class ManualCharacter {
private Composite manual;
private ScrolledComposite scrolled;
public ManualCharacter(ScrolledComposite scrolledPage){
manual = new Composite(scrolledPage, SWT.NONE);
scrolled = scrolledPage;
createPageContent();
}
public Composite getManualCharacter(){ return manual; }
private void createPageContent() {
Collection<DNDEntity> racesCol = Main.gameState.races.values();
Iterator<DNDEntity> itr = racesCol.iterator();
ArrayList<RaceEntity> races = new ArrayList<RaceEntity>();
while (itr.hasNext()) {
races.add((RaceEntity) itr.next());
}
// get classes from references
Collection<DNDEntity> classesCol = Main.gameState.classes.values();
Iterator<DNDEntity> itr2 = classesCol.iterator();
ArrayList<ClassEntity> classes = new ArrayList<ClassEntity>();
while (itr2.hasNext()) {
classes.add((ClassEntity) itr2.next());
}
GridLayout layout = new GridLayout();
layout.makeColumnsEqualWidth = false;
layout.horizontalSpacing = 3;
layout.numColumns = 3;
manual.setLayout(layout);
GridData gridData;
//NAME
Label charName = new Label(manual, SWT.NONE);
charName.setText("Name: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charName.setLayoutData(gridData);
charName.pack();
Text charNameText = new Text(manual, SWT.BORDER | SWT.CENTER);
charNameText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charNameText.setLayoutData(gridData);
//Level
Label charLevel = new Label(manual, SWT.NONE);
charLevel.setText("Level: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charLevel.setLayoutData(gridData);
charLevel.pack();
Text charLevelText = new Text(manual, SWT.BORDER | SWT.CENTER);
charLevelText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charLevelText.setLayoutData(gridData);
//EXP
Label charEXP = new Label(manual, SWT.NONE);
charEXP.setText("EXP: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charEXP.setLayoutData(gridData);
charEXP.pack();
Text charEXPText = new Text(manual, SWT.BORDER | SWT.CENTER);
charEXPText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charEXPText.setLayoutData(gridData);
//Race
Label charRace = new Label(manual, SWT.NONE);
charRace.setText("Race: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charRace.setLayoutData(gridData);
charRace.pack();
// race drop down menu
Combo raceDropDown = new Combo(manual, SWT.DROP_DOWN | SWT.READ_ONLY);
for (int i = 0; i < races.size(); i++) {
raceDropDown.add(races.get(i).getName());
}
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
raceDropDown.setLayoutData(gridData);
//Class
Label charClass = new Label(manual, SWT.NONE);
charClass.setText("Class: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charClass.setLayoutData(gridData);
charClass.pack();
// class drop down menu
Combo classDropDown = new Combo(manual, SWT.DROP_DOWN | SWT.READ_ONLY);
for (int i = 0; i < classes.size(); i++) {
classDropDown.add(classes.get(i).getName());
}
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
classDropDown.setLayoutData(gridData);
//Alignment
Label charAlignment = new Label(manual, SWT.NONE);
charAlignment.setText("Alignment: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charAlignment.setLayoutData(gridData);
charAlignment.pack();
Text charAlignmentText = new Text(manual, SWT.BORDER | SWT.CENTER);
charAlignmentText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charAlignmentText.setLayoutData(gridData);
//Deity
Label charDeity = new Label(manual, SWT.NONE);
charDeity.setText("Deity: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charDeity.setLayoutData(gridData);
charDeity.pack();
Text charDeityText = new Text(manual, SWT.BORDER | SWT.CENTER);
charDeityText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charDeityText.setLayoutData(gridData);
//Size
Label charSize = new Label(manual, SWT.NONE);
charSize.setText("Size: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charSize.setLayoutData(gridData);
charSize.pack();
// size drop down menu
Combo sizeDropDown = new Combo(manual, SWT.DROP_DOWN | SWT.READ_ONLY);
for (int i = 0; i < Main.gameState.sizeStrings.length; i++) {
sizeDropDown.add(Main.gameState.sizeStrings[i]);
}
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
sizeDropDown.setLayoutData(gridData);
//Age
Label charAge = new Label(manual, SWT.NONE);
charAge.setText("Age: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charAge.setLayoutData(gridData);
charAge.pack();
Text charAgeText = new Text(manual, SWT.BORDER | SWT.CENTER);
charAgeText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charAgeText.setLayoutData(gridData);
//Gender
Label charGender = new Label(manual, SWT.NONE);
charGender.setText("Gender: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charGender.setLayoutData(gridData);
charGender.pack();
Text charGenderText = new Text(manual, SWT.BORDER | SWT.CENTER);
charGenderText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charGenderText.setLayoutData(gridData);
//Height
Label charHeight = new Label(manual, SWT.NONE);
charHeight.setText("Height: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charHeight.setLayoutData(gridData);
charHeight.pack();
Text charHeightText = new Text(manual, SWT.BORDER | SWT.CENTER);
charHeightText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charHeightText.setLayoutData(gridData);
//Weight
Label charWeight = new Label(manual, SWT.NONE);
charWeight.setText("Weight: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charWeight.setLayoutData(gridData);
charWeight.pack();
Text charWeightText = new Text(manual, SWT.BORDER | SWT.CENTER);
charWeightText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charWeightText.setLayoutData(gridData);
//Eyes
Label charEyes = new Label(manual, SWT.NONE);
charEyes.setText("Eyes: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charEyes.setLayoutData(gridData);
charEyes.pack();
Text charEyesText = new Text(manual, SWT.BORDER | SWT.CENTER);
charEyesText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charEyesText.setLayoutData(gridData);
//Hair
Label charHair = new Label(manual, SWT.NONE);
charHair.setText("Hair: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charHair.setLayoutData(gridData);
charHair.pack();
Text charHairText = new Text(manual, SWT.BORDER | SWT.CENTER);
charHairText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charHairText.setLayoutData(gridData);
//Skin
Label charSkin = new Label(manual, SWT.NONE);
charSkin.setText("Skin: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charSkin.setLayoutData(gridData);
charSkin.pack();
Text charSkinText = new Text(manual, SWT.BORDER | SWT.CENTER);
charSkinText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
gridData.horizontalSpan = 2;
charSkinText.setLayoutData(gridData);
//Description
Label charDescription = new Label(manual, SWT.NONE);
charDescription.setText("Description: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 1;
charDescription.setLayoutData(gridData);
charDescription.pack();
Text charDescriptionText = new Text(manual, SWT.BORDER | SWT.CENTER);
charDescriptionText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
gridData.horizontalSpan = 2;
charDescriptionText.setLayoutData(gridData);
//Abilities
Label Abilities = new Label(manual, SWT.NONE);
Abilities.setText("Abilities: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
gridData.horizontalSpan = 3;
Abilities.setLayoutData(gridData);
Abilities.pack();
//STR
Label charSTR = new Label(manual, SWT.NONE);
charSTR.setText("STR: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 10;
gridData.horizontalSpan = 1;
charSTR.setLayoutData(gridData);
charSTR.pack();
Text charSTRText = new Text(manual, SWT.BORDER | SWT.CENTER);
charSTRText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
gridData.horizontalSpan = 2;
charSTRText.setLayoutData(gridData);
//DEX
Label charDEX = new Label(manual, SWT.NONE);
charDEX.setText("DEX: ");
gridData = new GridData(SWT.END, SWT.CENTER, false, false);
gridData.horizontalIndent = 10;
gridData.horizontalSpan = 1;
charDEX.setLayoutData(gridData);
charDEX.pack();
Text charDEXText = new Text(manual, SWT.BORDER | SWT.CENTER);
charDEXText.setText("");
gridData = new GridData(SWT.FILL, SWT.CENTER, true, true);
gridData.horizontalSpan = 2;
charDEXText.setLayoutData(gridData);
charDEXText.pack();
Button saveChar = new Button(manual, SWT.PUSH);
saveChar.setText("Save");
gridData = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
gridData.horizontalIndent = 5;
saveChar.setLayoutData(gridData);
saveChar.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
}
});
saveChar.pack();
// Button cancelChar = new Button(manual, SWT.PUSH);
// cancelChar.setText("Save");
// gridData = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
// gridData.horizontalIndent = 5;
// cancelChar.setLayoutData(gridData);
// cancelChar.addListener(SWT.Selection, new Listener() {
// public void handleEvent(Event event) {
//
// }
//
// });
// cancelChar.pack();
//TODO set the height for this scrollable composite from the Character Wizard
manual.layout();
manual.pack();
scrolled.setContent(manual);
scrolled.setMinHeight(manual.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
}
}