/*
* ******************************************************************************
* * Copyright 2015 See AUTHORS file.
* *
* * 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.uwsoft.editor.view.stage;
import com.badlogic.ashley.core.Entity;
import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch;
import com.badlogic.gdx.scenes.scene2d.*;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.uwsoft.editor.Overlap2DFacade;
import com.uwsoft.editor.view.ui.FollowersUIMediator;
import com.uwsoft.editor.view.ui.RulersUIMediator;
import com.uwsoft.editor.view.ui.UIMainTable;
import com.uwsoft.editor.view.ui.box.UIItemsTreeBox;
import com.uwsoft.editor.renderer.data.CompositeItemVO;
import com.uwsoft.editor.renderer.data.LayerItemVO;
public class UIStage extends Stage {
private final Overlap2DFacade facade;
public Group dummyTarget;
public UIMainTable uiMainTable;
public Group contextMenuContainer;
public Group midUI;
public UIStage() {
super(new ScreenViewport(), new PolygonSpriteBatch());
facade = Overlap2DFacade.getInstance();
//dummy target is basically the target of drop of items from resoruce panel
dummyTarget = new Group();
dummyTarget.setWidth(getWidth());
dummyTarget.setHeight(getHeight());
dummyTarget.setY(0);
dummyTarget.setX(0);
addActor(dummyTarget);
midUI = new Group();
addActor(midUI);
RulersUIMediator rulersUIMediator = facade.retrieveMediator(RulersUIMediator.NAME);
Actor rulersGroup = rulersUIMediator.getViewComponent();
FollowersUIMediator followersUIMediator = facade.retrieveMediator(FollowersUIMediator.NAME);
Group followersGroup = followersUIMediator.getViewComponent();
midUI.addActor(followersGroup);
midUI.addActor(rulersGroup);
contextMenuContainer = new Group();
uiMainTable = new UIMainTable();
addActor(uiMainTable);
addActor(contextMenuContainer);
setListeners();
}
public void resize(int width, int height) {
getViewport().update(width, height, true);
}
public void editPhysics(String assetName) {
//ItemPhysicsDialog dlg = new ItemPhysicsDialog(this);
//addActor(dlg);
//dlg.editAsset(name);
}
public void editPhysics(Entity item) {
//ItemPhysicsDialog dlg = new ItemPhysicsDialog(this);
//addActor(dlg);
//dlg.editItem(item);
}
public void setKeyboardFocus() {
setKeyboardFocus(dummyTarget);
}
public void loadScene(CompositeItemVO scene) {
Sandbox.getInstance().initSceneView(scene);
}
public void setListeners() {
addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
return event.getTarget() != getRoot() && event.getTarget() != dummyTarget;
}
});
}
public LayerItemVO getCurrentSelectedLayer() {
return null;
//TODO fix and uncomment
// UILayerBoxMediator mediator = facade.retrieveMediator(UILayerBoxMediator.NAME);
// int selectedLayerIndex = mediator.getCurrentSelectedLayerIndex();
// LayerItemVO layerVO = Sandbox.getInstance().sceneControl.getCurrentScene().dataVO.composite.layers.get(selectedLayerIndex);
// return layerVO;
}
public UIItemsTreeBox getItemsBox() {
return uiMainTable.itemsBox;
}
@Override
public boolean keyDown(int keyCode) {
return super.keyDown(keyCode);
}
}