package com.iambookmaster.client.quick;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.iambookmaster.client.Styles;
import com.iambookmaster.client.beans.Settings;
import com.iambookmaster.client.common.ColorPicker;
import com.iambookmaster.client.common.CompactHorizontalPanel;
import com.iambookmaster.client.locale.AppConstants;
import com.iambookmaster.client.locale.AppLocale;
import com.iambookmaster.client.model.Model;
import com.iambookmaster.client.model.SettingsListener;
public class QuickSettingsPlayerEditor extends VerticalPanel implements QuickViewWidget {
private static final AppConstants appConstants = AppLocale.getAppConstants();
private Model model;
private SettingsListener settingsListener;
private CheckBox hiddenUsingObjects;
private ListBox bagStatus;
private ColorPicker textColor;
private ColorPicker bagColor;
private ColorPicker applicationtColor;
private ColorPicker textBackground;
private CheckBox disableAudio;
private CheckBox disableImages;
private CheckBox showAboutOnStart;
private CheckBox showModificators;
private CheckBox showBattleConsole;
private CheckBox skipMustGoParagraphs;
private CheckBox hideNonMathedParametercConnections;
private TextBox feedbackEmail;
private CheckBox verticalObjects;
private CheckBox overflowControl;
private CheckBox nonCommercialOnly;
// private ListBox showConnectionType;
public QuickSettingsPlayerEditor(Model mod) {
this.model = mod;
setSpacing(5);
setSize("100%", "100%");
Label label = new Label(appConstants.quickPlayerTitle());
add(label);
setCellHeight(label,"1%");
setCellWidth(label,"100%");
ClickHandler clickListener = new ClickHandler() {
public void onClick(ClickEvent event) {
updateSettings(event.getSource());
}
};
ChangeHandler changeHandler = new ChangeHandler() {
public void onChange(ChangeEvent event) {
updateSettings(event.getSource());
}
};
hiddenUsingObjects = new CheckBox(appConstants.quickPlayerHiddenItems());
hiddenUsingObjects.addClickHandler(clickListener);
add(hiddenUsingObjects);
setCellHeight(hiddenUsingObjects,"1%");
setCellWidth(hiddenUsingObjects,"100%");
skipMustGoParagraphs = new CheckBox(appConstants.quickPlayerSkipMustGoParagraphs());
skipMustGoParagraphs.setTitle(appConstants.quickPlayerSkipMustGoParagraphsTitle());
skipMustGoParagraphs.addClickHandler(clickListener);
add(skipMustGoParagraphs);
setCellHeight(skipMustGoParagraphs,"1%");
setCellWidth(skipMustGoParagraphs,"100%");
CompactHorizontalPanel horizontalPanel = new CompactHorizontalPanel();
bagStatus = new ListBox();
bagStatus.addChangeHandler(changeHandler);
bagStatus.addItem(appConstants.quickPlayerShowListAlways());
bagStatus.addItem(appConstants.quickPlayerShowListPopup());
bagStatus.addItem(appConstants.quickPlayerShowListNo());
horizontalPanel.addCompactWidget(bagStatus);
horizontalPanel.addFullText(appConstants.quickPlayerShowList());
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
showModificators = new CheckBox(appConstants.quickPlayerShowModificators());
showModificators.setTitle(appConstants.quickPlayerShowModificatorsTitle());
showModificators.addClickHandler(clickListener);
add(showModificators);
setCellHeight(showModificators,"1%");
setCellWidth(showModificators,"100%");
/*Colors*/
horizontalPanel = new CompactHorizontalPanel();
textColor = new ColorPicker();
textColor.addChangeHandler(changeHandler);
horizontalPanel.addCompactWidget(textColor);
horizontalPanel.addFullText(appConstants.quickPlayerTextColor());
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
horizontalPanel = new CompactHorizontalPanel();
textBackground = new ColorPicker();
textBackground.addChangeHandler(changeHandler);
horizontalPanel.addCompactWidget(textBackground);
horizontalPanel.addFullText(appConstants.quickPlayerTextBackground());
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
horizontalPanel = new CompactHorizontalPanel();
bagColor = new ColorPicker();
bagColor.addChangeHandler(changeHandler);
horizontalPanel.addCompactWidget(bagColor);
horizontalPanel.addFullText(appConstants.quickPlayerListBackground());
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
horizontalPanel = new CompactHorizontalPanel();
applicationtColor = new ColorPicker();
applicationtColor.addChangeHandler(changeHandler);
horizontalPanel.addCompactWidget(applicationtColor);
horizontalPanel.addFullText(appConstants.quickPlayerApplicationBackground());
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
disableAudio = new CheckBox(appConstants.quickPlayerDisableAudio());
disableAudio.addClickHandler(clickListener);
add(disableAudio);
setCellHeight(disableAudio,"1%");
setCellWidth(disableAudio,"100%");
disableImages = new CheckBox(appConstants.quickPlayerDisableImages());
disableImages.addClickHandler(clickListener);
add(disableImages);
setCellHeight(disableImages,"1%");
setCellWidth(disableImages,"100%");
showAboutOnStart = new CheckBox(appConstants.quickPlayerShowAbout());
showAboutOnStart.addClickHandler(clickListener);
add(showAboutOnStart);
setCellHeight(showAboutOnStart,"1%");
setCellWidth(showAboutOnStart,"100%");
horizontalPanel = new CompactHorizontalPanel();
feedbackEmail = new TextBox();
feedbackEmail.addChangeHandler(changeHandler);
feedbackEmail.setTitle(appConstants.quickPlayerFeedbackEmailTitle());
horizontalPanel.addText(appConstants.quickPlayerFeedbackEmail());
horizontalPanel.addFullWidget(feedbackEmail);
add(horizontalPanel);
setCellHeight(horizontalPanel,"1%");
setCellWidth(horizontalPanel,"100%");
hideNonMathedParametercConnections = new CheckBox(appConstants.quickPlayerHideNonMathedParametersConnections());
hideNonMathedParametercConnections.setTitle(appConstants.quickPlayerHideNonMathedParametersConnectionsTitle());
hideNonMathedParametercConnections.addClickHandler(clickListener);
add(hideNonMathedParametercConnections);
setCellHeight(hideNonMathedParametercConnections,"1%");
setCellWidth(hideNonMathedParametercConnections,"100%");
showBattleConsole = new CheckBox(appConstants.quickPlayerShowBattleConsole());
showBattleConsole.setTitle(appConstants.quickPlayerShowBattleConsoleTitle());
showBattleConsole.addClickHandler(clickListener);
add(showBattleConsole);
setCellHeight(showBattleConsole,"1%");
setCellWidth(showBattleConsole,"100%");
overflowControl = new CheckBox(appConstants.quickPlayerOverflowControl());
overflowControl.setTitle(appConstants.quickPlayerOverflowControlTitle());
overflowControl.addClickHandler(clickListener);
add(overflowControl);
setCellHeight(overflowControl,"1%");
setCellWidth(overflowControl,"100%");
verticalObjects = new CheckBox(appConstants.quickPlayerVerticalObject());
verticalObjects.setTitle(appConstants.quickPlayerVerticalObjectTitle());
verticalObjects.addClickHandler(clickListener);
add(verticalObjects);
setCellHeight(verticalObjects,"1%");
setCellWidth(verticalObjects,"100%");
nonCommercialOnly = new CheckBox(appConstants.quickPlayerNonCommercialOny());
nonCommercialOnly.setTitle(appConstants.quickPlayerNonCommercialOnyTitle());
nonCommercialOnly.addClickHandler(clickListener);
add(nonCommercialOnly);
setCellHeight(nonCommercialOnly,"1%");
setCellWidth(nonCommercialOnly,"100%");
// showConnectionType = new ListBox();
// showConnectionType.addItem(appConstants.quickPlayerConnectionTypeDefault(), "0");
// showConnectionType.addItem(appConstants.quickPlayerConnectionTypeLastWord(), "1");
// showConnectionType.addItem(appConstants.quickPlayerConnectionTypeBrackets(), "2");
// showConnectionType.addItem(appConstants.quickPlayerConnectionTypeName(), "3");
// showConnectionType.addChangeHandler(changeHandler);
// showConnectionType.setTitle(appConstants.quickPlayerConnectionsType());
// horizontalPanel.addText(appConstants.quickPlayerFeedbackEmail());
// horizontalPanel.addFullWidget(showConnectionType);
// add(horizontalPanel);
// setCellHeight(horizontalPanel,"1%");
// setCellWidth(horizontalPanel,"100%");
HTML html = new HTML(" ");
html.setStyleName(Styles.FILLER);
add(html);
setCellHeight(html,"99%");
setCellWidth(html,"100%");
settingsListener = new SettingsListener(){
public void settingsWereUpated() {
update();
}
};
model.addSettingsListener(settingsListener);
update();
}
public void update() {
Settings settings = model.getSettings();
hiddenUsingObjects.setValue(settings.isHiddenUsingObjects());
bagStatus.setSelectedIndex(settings.getPlayerListType());
textColor.setSelectedIndex(settings.getTextColor());
textBackground.setSelectedIndex(settings.getTextBackground());
bagColor.setSelectedIndex(settings.getBagColor());
applicationtColor.setSelectedIndex(settings.getApplicationColor());
disableAudio.setValue(settings.isDisableAudio());
disableImages.setValue(settings.isDisableImages());
showAboutOnStart.setValue(settings.isShowAboutOnStart());
showModificators.setValue(settings.isShowModificators());
hideNonMathedParametercConnections.setValue(settings.isHideNonMatchedParameterConnections());
showBattleConsole.setValue(settings.isShowBattleConsole());
overflowControl.setValue(settings.isOverflowControl());
skipMustGoParagraphs.setValue(settings.isSkipMustGoParagraphs());
verticalObjects.setValue(settings.isVerticalObjects());
nonCommercialOnly.setValue(settings.isDemoVersion());
// showConnectionType.setSelectedIndex(settings.getShowConnectionType());
if (settings.getFeedbackEmail()==null) {
feedbackEmail.setText("");
} else {
feedbackEmail.setText(settings.getFeedbackEmail());
}
}
private void updateSettings(Object object) {
if (object==hiddenUsingObjects) {
model.getSettings().setHiddenUsingObjects(hiddenUsingObjects.getValue());
} else if (object==bagStatus) {
model.getSettings().setPlayerListType(bagStatus.getSelectedIndex());
} else if (object==textColor) {
model.getSettings().setTextColor(textColor.getSelectedIndex());
} else if (object==textBackground) {
model.getSettings().setTextBackground(textBackground.getSelectedIndex());
} else if (object==bagColor) {
model.getSettings().setBagColor(bagColor.getSelectedIndex());
} else if (object==applicationtColor) {
model.getSettings().setApplicationColor(applicationtColor.getSelectedIndex());
} else if (object==disableAudio) {
model.getSettings().setDisableAudio(disableAudio.getValue());
} else if (object==disableImages) {
model.getSettings().setDisableImages(disableImages.getValue());
} else if (object==showAboutOnStart) {
model.getSettings().setShowAboutOnStart(showAboutOnStart.getValue());
} else if (object==feedbackEmail) {
model.getSettings().setFeedbackEmail(feedbackEmail.getText().trim());
} else if (object==showModificators) {
model.getSettings().setShowModificators(showModificators.getValue());
} else if (object==showBattleConsole) {
model.getSettings().setShowBattleConsole(showBattleConsole.getValue());
} else if (object==hideNonMathedParametercConnections) {
model.getSettings().setHideNonMatchedParameterConnections(hideNonMathedParametercConnections.getValue());
} else if (object==skipMustGoParagraphs) {
model.getSettings().setSkipMustGoParagraphs(skipMustGoParagraphs.getValue());
} else if (object==verticalObjects) {
model.getSettings().setVerticalObjects(verticalObjects.getValue());
} else if (object==overflowControl) {
model.getSettings().setOverflowControl(overflowControl.getValue());
} else if (object==nonCommercialOnly) {
model.getSettings().setDemoVersion(nonCommercialOnly.getValue());
// } else if (object==showConnectionType) {
// model.getSettings().setShowConnectionType(showConnectionType.getSelectedIndex());
}
model.updateSettings(settingsListener);
}
public void close() {
model.removeSettingsListener(settingsListener);
}
}