package 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);*/ } } }