rendered paste bodypackage buho29.painter.view{
//import aeon.AeonLAF;
import buho29.aswing.BuilderComponent;
import buho29.painter.AppPainter;
import buho29.painter.controler.ManagerHistory;
import buho29.painter.controler.ManagerTool;
import buho29.painter.event.PainterEvent;
import buho29.painter.event.ToolEvent;
import buho29.painter.model.DocumentPaint;
import buho29.painter.model.ModelPainter;
import buho29.template.command.ICommand;
import buho29.template.mvc.*;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.Dictionary;
import org.aswing.plaf.basic.BasicLookAndFeel;
//import org.aswing.skinbuilder.orange.OrangeLookAndFeel;
//import org.aswing.skinbuilder.SkinBuilderLAF;
import org.aswing.*;
import org.aswing.border.*;
import org.aswing.geom.*;
import org.aswing.colorchooser.*;
import org.aswing.ext.*;
import org.aswing.plaf.basic.frame.FrameTitleBar;
import buho29.utils.Logger;
/**
* ViewMain
*/
public class ViewMain extends JWindow implements IView{
//members define
private var menu:JMenuBar;
private var archivo:JMenu;
private var saveImgItem:JMenuItem;
private var capas:JMenu;
private var about:JMenuItem;
private var splitCenter:JSplitPane;
private var paneLeft:JTabbedPane;
private var splitRight:JSplitPane;
private var paneRight:JPanel;
private var tabbedPane:JTabbedPane;
private var panelToolProperties:JPanel;
private var footerPane:JPanel;
private var _frameDocument:JFrame;
private var _formDocument:FormDocument
private var com16:JPanel;
private function createMenuArchive():void{
//component creation
archivo = new JMenu();
archivo.setText("Archivo");
var newDocuments:JMenuItem = new JMenuItem("Nuevo");
newDocuments.addActionListener(createDoc);
archivo.append(newDocuments);
}
public function createDoc(e:Event):void{
var doc:DocumentPaint = _model.createDocument();
_formDocument.data = doc;
_frameDocument.show();
}
private function valideDoc(e:Event):void{
var doc:DocumentPaint = _formDocument.data as DocumentPaint;
doc.canvas = createCanvas(doc.name);
_model.currentDocument = doc;
_frameDocument.visible = false;
}
private function createFrameDocument():void {
_formDocument = new FormDocument();
_formDocument.addEventListener(FormDocument.OK,valideDoc);
_frameDocument = BuilderComponent.createFrame("Nuevo Documento",_formDocument,this);
}
/**
* ViewMain Constructor
*/
public function ViewMain(owner:*=null){
super(owner);
//component creation
//setOpaque(true);
setSize(new IntDimension(800, 600));
createFrameDocument();
menu = new JMenuBar();
createMenuArchive();
capas = new JMenu();
capas.setText("Capas");
about = new JMenuItem();
about.setText("?");
menu.append(archivo);
menu.append(capas);
menu.append(about);
splitCenter = new JSplitPane();
splitCenter.setOneTouchExpandable(true);
splitCenter.setDividerLocation(200);
splitCenter.setContinuousLayout(true);
paneLeft = new JTabbedPane();
paneLeft.setTabPlacement(JTabbedPane.BOTTOM);
splitRight = new JSplitPane();
splitRight.setOrientation(1);
splitRight.setContinuousLayout(true);
paneRight = new JPanel();
paneRight.setOpaque(true);
paneRight.setLayout(new BorderLayout());
tabbedPane = new JTabbedPane();
tabbedPane.setOpaque(true);
tabbedPane.setSize(new IntDimension(300, 300));
tabbedPane.setConstraints("Center");
tabbedPane.setHorizontalAlignment(0);
tabbedPane.setVerticalAlignment(0);
tabbedPane.setVerticalTextPosition(0);
tabbedPane.setTabPlacement(3);
panelToolProperties = new JPanel();
panelToolProperties.setOpaque(true);
panelToolProperties.setSize(new IntDimension(400, 400));
com16 = new JPanel();
com16.setOpaque(true);
com16.setSize(new IntDimension(400, 400));
footerPane = new JPanel();
footerPane.setOpaque(true);
footerPane.setSize(new IntDimension(400, 400));
footerPane.setPreferredSize(new IntDimension(1, 20));
//component layoution
getContentPane().append(menu,BorderLayout.NORTH);
getContentPane().append(splitCenter,BorderLayout.CENTER);
getContentPane().append(footerPane,BorderLayout.SOUTH);
createMenuSkin();
splitCenter.append(paneLeft)
splitCenter.append(splitRight)
splitRight.append(paneRight);
paneRight.append(tabbedPane)
tabbedPane.append(panelToolProperties)
tabbedPane.append(com16);
// tools jframe
createToolFrame();
createColorFrame();
// register events
}
//{ Tool
private var _paneTools:JPanel;
private var _group:ButtonGroup ;
private var _dicButtonTools:Dictionary ;
private function createToolFrame():void{
//jframe
frameTools = new JFrame(getContentPane(),"");
// title
var wlayout:WindowLayout = new WindowLayout();
frameTools.setLayout(wlayout);
var comp:FrameTitleBar = wlayout.getTitleBar() as FrameTitleBar;
//comp.remove(comp.getComponent(1));
comp.setMinimumWidth(57);
frameTools.setClosable(false);
frameTools.setSize(new IntDimension(20, 300));
frameTools.setLocationXY(5,30);
//frameTools.setResizable(false);
var panmain:JPanel = new JPanel(new SoftBoxLayout(SoftBoxLayout.Y_AXIS));
_paneTools = new JPanel(new FlowLayout());
_group = new ButtonGroup();
_paneTools.setPreferredSize(new IntDimension(1,175));
// history
var history:ManagerHistory = ManagerHistory.getInstance();
var panHistory:JPanel = new JPanel();
var bundo:JButton = new JButton("",Resource.createIcon(Symbol_icon_Arrow_undo)) ;
bundo.addEventListener(MouseEvent.CLICK,history.undo);
var bredo:JButton = new JButton("",Resource.createIcon(Symbol_icon_Arrow_redo)) ;
bredo.addEventListener(MouseEvent.CLICK,history.redo);
panHistory.appendAll(bredo,bundo);
panHistory.setPreferredSize(new IntDimension(1,30));
history.addEventListener(ManagerHistory.CHANGE,function (e:Event):void {
var next:Boolean = history.hasNextRedo();
if(next) bredo.alpha = 1;
else bredo.alpha = .5;
bredo.setEnabled(next);
next = history.hasNextUndo();
if(next) bundo.alpha = 1;
else bundo.alpha = .5;
bundo.setEnabled(next);
});
/* color */
var paneSouth:JPanel = new JPanel(new EmptyLayout())//);//new BoxLayout(BoxLayout.Y_AXIS,2));
//paneSouth.setBorder(new BevelBorder());
paneSouth.setSizeWH(50 ,60);
var colorA:JButtonColor = new JButtonColor(30, 30,ASColor.BLACK);
colorA.setLocationXY(9,9);
colorA.addEventListener(MouseEvent.CLICK,onEventColor);
currentButtonColor = colorA;
var colorB:JButtonColor = new JButtonColor(30, 30,ASColor.RED);
colorB.addEventListener(MouseEvent.CLICK,onEventColor);
colorB.setLocationXY(20,20);
//paneSouth.setBorder(new EmptyBorder(null,new Insets(20,2,2,2)));
//paneSouth.setPreferredSize(new IntDimension(1,50));
//paneSouth.append(colorA);
paneSouth.appendAll(colorA,colorB);
panmain.append(_paneTools);
panmain.append(new JSeparator());
panmain.append(panHistory);
panmain.append(new JSeparator());
panmain.append(paneSouth);
frameTools.getContentPane().append(panmain,BorderLayout.CENTER);
frameTools.show();
_dicButtonTools = new Dictionary();
// event model
}
public function addToolItem(state:String,cmd:Function,ico:Icon,tip:String=""):void{
var button:JToggleButton = new JToggleButton("",ico);
button.setToolTipText(tip);
button.addActionListener(cmd);
_paneTools.append(button);
_group.append(button);
_dicButtonTools[state] = button;
}
private function onToolChanged(e:Event):void{
try {
var bt:JToggleButton = _dicButtonTools[_model.tool.state] as JToggleButton ;
bt.setSelected(true);
}catch (e:Error){
Logger.writeLine("Error onToolChanged in viewMain",Logger.ERROR);
}
}
//} endregion
private function createColorFrame():void{
chooserDialog = JColorChooser.createDialog(new JColorChooser(),this, "Elija un color",
true, __colorSelected);
//center it
var location:IntPoint = AsWingUtils.getScreenCenterPosition();
location.x -= chooserDialog.getWidth()/2;
location.y -= chooserDialog.getHeight()/2;
chooserDialog.setLocation(location);
}
private function __colorSelected(color:ASColor):void{
_model.colorFront = color;
}
private var chooserDialog:JFrame;
private var currentButtonColor:JButtonColor;
private function onEventColor(e:Event):void{
currentButtonColor = e.target as JButtonColor;
chooserDialog.show();
}
private var frameTools:JFrame
//_________public_________
private var _dicMenu:Dictionary
public function addMenuItem(parent:String,name:String,cmd:Function):void{
_dicMenu
}
public function setPanelProperties(compo:Component):void{
if(panelToolProperties != null)tabbedPane.remove(panelToolProperties);
tabbedPane.insertTab(0,compo,"Tool");
tabbedPane.revalidate();
panelToolProperties = compo as JPanel;
}
public function setLayerView(compo:Component):void{
splitRight.append(compo);
}
private var _canvas:ViewCanvas;
public function createCanvas(name:String="empty"):ViewCanvas{
if(_canvas == null){
_canvas = new ViewCanvas();
paneLeft.appendTab(_canvas,name);
_canvas.init();
}
return _canvas;
}
//{ region mvc
public function setControler(c:IControler): void{}
public function setModel(m:IModel): void{
_model = m as ModelPainter;
_model.addEventListener(ToolEvent.TOOLCHANGED,onToolChanged);
_model.addEventListener(PainterEvent.COLORCHANGED,onColorChanged);
}
private var _model:ModelPainter;
public function getModel(): IModel{
return _model;
}
//} endregion
private function onColorChanged(e:Event):void {
currentButtonColor.setBackground(_model.colorFront);
}
private function createMenuSkin():void{
//component creation
/*var menuSkin:JMenu = new JMenu("Skin");
var v:ViewMain = this;
var defaultSkin:JMenuItem = new JMenuItem("DefaultSkin");
defaultSkin.addActionListener(function (e:Event):void{
UIManager.setLookAndFeel(new BasicLookAndFeel());
AsWingUtils.updateAllComponentUIInMemory();
});
var orangeSkin:JMenuItem = new JMenuItem("Orange");
orangeSkin.addActionListener(function (e:Event):void{
UIManager.setLookAndFeel(new OrangeLookAndFeel() );
AsWingUtils.updateAllComponentUIInMemory();
});
var comenySkin:JMenuItem = new JMenuItem("Comeny laf");
comenySkin.addActionListener(function (e:Event):void{
UIManager.setLookAndFeel(new SkinBuilderLAF());
AsWingUtils.updateAllComponentUIInMemory();
});
var AeonSkin:JMenuItem = new JMenuItem("Aeon laf");
AeonSkin.addActionListener(function (e:Event):void{
UIManager.setLookAndFeel(new AeonLAF());
AsWingUtils.updateAllComponentUIInMemory();
});
//component layoution
menu.append(menuSkin);
menuSkin.append(defaultSkin);
menuSkin.append(orangeSkin);
menuSkin.append(comenySkin);
menuSkin.append(AeonSkin);*/
}
}
}