package surface;

import hu.swankey.ammo.common.yggdrasil.basics.ComplexObject;
import hu.swankey.ammo.common.yggdrasil.basics.YObject;
import hu.swankey.ammo.common.yggdrasil.ext.Universe;
import hu.swankey.ammo.common.yggdrasil.ext.World;
import hu.swankey.ammo.common.yggdrasil.ext.FieldObject.FieldObjectClass;

import java.awt.Dimension;

import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

import background.Controller;

public class ScreenEditor {
        
    private SelectorTree jtree_entity;
    private SelectorTree jtree_classes;
    private final Controller controller;
    
    private ScreenEditor(Controller controller){
        this.controller = controller;
    }

    public static MapEditor create(final Controller controller) {
        MapEditor editor = new MapEditor(controller);
        editor.setLayout( new BoxLayout(editor, BoxLayout.Y_AXIS) );
        
        //editor.jtree_entity = SelectorTree.create(TITLE_ENTITY, controller.getYggdrasil().getRoot(), controller, false);
        editor.jtree_entity = SelectorTree.createYggdrasilSelector(TITLE_ENTITY, controller.getYggdrasil().getRoot(), controller, false);
        editor.jtree_classes = SelectorTree.createClassSelector(TITLE_CLASSES, controller, false, FieldObjectClass.singleton());
        
        JPanel rightPanel = new JPanel();
        rightPanel.setLayout( new BoxLayout(rightPanel, BoxLayout.Y_AXIS) );
        rightPanel.add( editor.jtree_entity );      
        rightPanel.add( editor.jtree_classes );
        
        
        
 
        rightPanel.add( controller.getCommandBar().addHiddenCommand(
                "Create Object",
                "world.put(obj:%2.new(name:%S(name)), coordx:%x, coordy:%y);",
                "ext.World", "def.ClassDef") );
        
        JSplitPane jsplit_map = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, MapView.create(controller), rightPanel );                
        jsplit_map.setDividerSize(3);
        jsplit_map.setResizeWeight(0.9);
        jsplit_map.setDividerLocation(0.9);
        
        
        
        editor.add(jsplit_map);  
        
        controller.addListener(editor);
        return editor;
    }
    
   
}
