/*******************************************************************************
* Copyright 2014 Rafael Garcia Moreno.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.bladecoder.engineeditor.ui;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Locale;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.bladecoder.engine.model.World;
import com.bladecoder.engine.util.Config;
import com.bladecoder.engineeditor.Ctx;
import com.bladecoder.engineeditor.model.Project;
import com.bladecoder.engineeditor.ui.panels.PropertyTable;
public class WorldProps extends PropertyTable {
public WorldProps(Skin skin) {
super(skin);
Ctx.project.addPropertyChangeListener(Project.NOTIFY_PROJECT_LOADED, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent arg0) {
setProject();
}
});
}
@Override
protected void updateModel(String property, String value) {
if (property.equals(Project.WIDTH_PROPERTY)) {
World.getInstance().setWidth(Integer.parseInt(value));
} else if (property.equals(Config.TITLE_PROP)) {
Ctx.project.getProjectConfig().setProperty(Config.TITLE_PROP, value);
} else if (property.equals(Project.HEIGHT_PROPERTY)) {
World.getInstance().setHeight(Integer.parseInt(value));
} else if (property.equals(Config.INVENTORY_POS_PROP)) {
Ctx.project.getProjectConfig().setProperty(Config.INVENTORY_POS_PROP, value);
} else if (property.equals(Config.INVENTORY_AUTOSIZE_PROP)) {
Ctx.project.getProjectConfig().setProperty(Config.INVENTORY_AUTOSIZE_PROP, value);
} else if (property.equals(Config.UI_MODE)) {
Ctx.project.getProjectConfig().setProperty(Config.UI_MODE, value);
} else if (property.equals(Config.SINGLE_ACTION_INVENTORY)) {
Ctx.project.getProjectConfig().setProperty(Config.SINGLE_ACTION_INVENTORY, value);
} else if (property.equals(Config.FAST_LEAVE)) {
Ctx.project.getProjectConfig().setProperty(Config.FAST_LEAVE, value);
} else if (property.equals(Config.DEBUG_PROP)) {
Ctx.project.getProjectConfig().setProperty(Config.DEBUG_PROP, value);
} else if (property.equals(Config.CHARACTER_ICON_ATLAS)) {
Ctx.project.getProjectConfig().setProperty(Config.CHARACTER_ICON_ATLAS, value);
} else if (property.equals(Config.SHOW_DESC_PROP)) {
Ctx.project.getProjectConfig().setProperty(Config.SHOW_DESC_PROP, value);
} else if (property.equals(Config.AUTO_HIDE_TEXTS)) {
Ctx.project.getProjectConfig().setProperty(Config.AUTO_HIDE_TEXTS, value);
} else if (property.equals(Config.EXTEND_VIEWPORT_PROP)) {
Ctx.project.getProjectConfig().setProperty(Config.EXTEND_VIEWPORT_PROP, value);
}
Ctx.project.setModified(); // TODO Add propertychange to Config
}
private void setProject() {
clearProps();
if (Ctx.project.getProjectDir() != null) {
addProperty(Project.WIDTH_PROPERTY, World.getInstance().getWidth());
addProperty(Project.HEIGHT_PROPERTY, World.getInstance().getHeight());
addProperty(Config.TITLE_PROP, Ctx.project.getTitle());
addProperty(Config.INVENTORY_POS_PROP,
Ctx.project.getProjectConfig().getProperty(Config.INVENTORY_POS_PROP, "DOWN").toUpperCase(Locale.ENGLISH), new String[] {"TOP", "DOWN", "LEFT", "RIGHT", "CENTER"});
addProperty(Config.INVENTORY_AUTOSIZE_PROP, Boolean
.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.INVENTORY_AUTOSIZE_PROP, "true")));
addProperty(Config.UI_MODE, Ctx.project.getProjectConfig().getProperty(Config.UI_MODE, "TWO_BUTTONS").toUpperCase(Locale.ENGLISH), new String[] {"TWO_BUTTONS", "PIE", "SINGLE_CLICK"});
addProperty(Config.SINGLE_ACTION_INVENTORY, Boolean
.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.SINGLE_ACTION_INVENTORY, "false")));
addProperty(Config.FAST_LEAVE, Boolean
.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.FAST_LEAVE, "false")));
addProperty(Config.DEBUG_PROP,
Boolean.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.DEBUG_PROP, "false")));
addProperty(Config.SHOW_DESC_PROP,
Boolean.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.SHOW_DESC_PROP, "true")));
addProperty(Config.AUTO_HIDE_TEXTS,
Boolean.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.AUTO_HIDE_TEXTS, "true")));
addProperty(Config.CHARACTER_ICON_ATLAS,
Ctx.project.getProjectConfig().getProperty(Config.CHARACTER_ICON_ATLAS, ""));
addProperty(Config.EXTEND_VIEWPORT_PROP, Boolean
.parseBoolean(Ctx.project.getProjectConfig().getProperty(Config.EXTEND_VIEWPORT_PROP, "true")));
}
invalidateHierarchy();
}
}