All pastes #778243 Raw Edit

Untitled

public text v1 · immutable
·published 2007-11-17 12:58 UTC
rendered paste body
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);*/
			
		}
				
	}
}