// 建構子,傳入按鈕所附帶的工具模式, 按鈕正常狀態的圖片URI, 按鈕被點選狀態的URI public ToolButton(BaseUMLMode _Mode, Uri _uri1, Uri _uri2) : base() { Mode = _Mode; uri1 = _uri1; uri2 = _uri2; setSelected(false); }
//Add new tool to toolsbox public void AddTool(BaseUMLMode Mode, Uri icon1, Uri icon2, ToolBar location) { ToolButton UIButton = new Controls.ToolButton(Mode, icon1, icon2); UIButton.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler(ToolsButton_MouseLeftButtonDown), true); UIButton.AddHandler(MouseEnterEvent, new MouseEventHandler(ToolsButton_MouseEnter), true); UIButton.AddHandler(MouseLeaveEvent, new MouseEventHandler(ToolsPanel_MouseEnter), true); location.Items.Add(UIButton); Buttons.Add(UIButton); }
/* Constructor */ public MainPanel() : base() { /* 由於WPF架構中背景為NULL不能觸發任何事件,所以要將透明色填入背景 */ BrushConverter bc = new BrushConverter(); this.Background = (Brush)bc.ConvertFrom("Transparent"); /* 建立前景繪圖區域,用來繪製移動,選取等等滑鼠操作的特效 */ Foreground = new DrawingGroup(); UMLShapes = new List<BaseUMLShape>(); /* MVC架構,把自身的滑鼠事件(V)全權交由封裝的CoreMouseEventProcessor事件處理器(C)來分析 */ EventProcessor = new CoreMouseEventProcessor(this); /* MVC架構,當CoreMouseEventProcessor(C)分析完之後自動觸發下面的函式,並將自定義的事件參數送入函式(V) */ EventProcessor.MouseEvent += EventProcessor_MouseEvent; /* 透過多型將Mode設為None_Mode(無任何動作),需要傳入本身的ref來讓Mode的子類別來取得MainPanel持有的相關資訊 */ Mode = new None_Mode(this); }
public ModeChangeEventArgs(BaseUMLMode m) { Mode = m; }
/* 用來設定Mode,此部分為多型,可以傳入任何BaseUMLMode的子類別,並都過多型來展現其功能 */ public void setMode(BaseUMLMode _Mode) { Mode = _Mode; }