123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using Janus.Windows.GridEX;
- using System.IO;
- using System.Drawing.Imaging;
- using Microsoft.VisualBasic.PowerPacks;
- using System.Drawing.Drawing2D;
- using System.Collections;
- using Janus.Windows.GridEX.EditControls;
- namespace IControls_FireManager
- {
- public partial class Form_MapDesigner : Form
- {
- // CheckedComboBox_DeviceType콤보박스에 체크되어 있는 것만 알기 위해서 사용되는 ArrayList
- ArrayList DeviceType = new ArrayList();
- // 접근 파일 및 경로
- string Default_Field_PageName = null;
- string Default_Field_FileName = null;
- string Default_Field_FullPath = null;
- string Default_Field_FullPath_FileName = null;
- string Default_Symbol_FullPath = null;
- string Default_Xml_FullPath = null;
- // 아이디 순번 (리스트뷰에 속한 디바이스 아이콘 혹은 배경에서 오른쪽 마우스 클릭해서 추가하는 버튼 아이콘)
- int ICON_ID_Order = 0;
- // 현재 선택된 픽쳐박스
- _PictureBoxItem Selected_PictureBoxItem = new _PictureBoxItem();
- // 배경화면에서 드래그 혹은 아이템(디바이스 아이콘, 버튼 아이콘) 을 선택하는 경우 생성되는 네모박스 스타일
- DashStyle Selected_DashStyle_First = DashStyle.Dash;
- DashStyle Selected_DashStyle_Second = DashStyle.DashDot;
- Color Selected_Color = Color.Red;
- int Selected_BorderWidth_BakcGround = 1; // 배경에서 드래그할때 생기는 네모박스 굵기
- int Selected_BorderWidth_Item = 3; // 별도로 아이템 (디바이스 아이콘, 버튼 아이콘) 선택되었을때 생기는 네모박스 굵기는 조금 더 굵게 표시한다
- // 배경에서 마우스 드래그시 좌표값
- bool BackGround_MouseDrag = false;
- int BackGround_MouseDrag_Before_X = 0;
- int BackGround_MouseDrag_Before_Y = 0;
- int BackGround_MouseDrag_After_X = 0;
- int BackGround_MouseDrag_After_Y = 0;
- // 배경에서 마우스 드래그하면 사각형이 생성
- public ShapeContainer ShapeContainer_MouseDragBackGround = new ShapeContainer();
- public LineShape LineShape_MouseDragBackGround_TOP = new LineShape();
- public LineShape LineShape_MouseDragBackGround_BOTTOM = new LineShape();
- public LineShape LineShape_MouseDragBackGround_LEFT = new LineShape();
- public LineShape LineShape_MouseDragBackGround_RIGHT = new LineShape();
- // 키이벤트
- bool KeyDown_ALTKEY = false; // 현재 ALTKEY 키를 눌렀는지 확인
- bool KeyDown_SHIFTKEY = false; // 현재 SHIFTKEY 키를 눌렀는지 확인
- // 복사용 : 아이콘 (디바이스 아이콘 혹은 버튼 아이콘)을 복사하기 위해서 사용되는 해쉬테이블
- public Hashtable COPY_HASH_ICON = new Hashtable();
- public ArrayList COPY_LIST_ICON_ID = new ArrayList();
- // 임시용 : 저장직전 맵디자이너중 추가된 아이콘 (디바이스 아이콘 혹은 버튼 아이콘)을 관리하기 위해서 사용되는 해쉬테이블
- public Hashtable TEMP_HASH_ICON = new Hashtable();
- public ArrayList TEMP_LIST_ICON_ID = new ArrayList();
- // 타이머 동작
- int MapDesigner_Count = 0;
- // 팝업용
- Form DialogPopup = new Form();
- // 관할수신기 아이디 정보
- public string Seleted_RECEIVER_ID = null;
- // 페이지 정보
- public string Seleted_PageNodeKey = null;
- public string Seleted_PageNodeText = null;
- // 픽쳐박스 좌표 (수직으로 드래그 할지 수평으로 드래그 할지 이전 좌표값 비교용)
- public int PictureBox_Old_MousePoint_X = 0;
- public int PictureBox_New_MousePoint_X = 0;
- // 픽쳐박스 드래그하는 경우 Shift 키를 누른상태가 유지 (true : Down , false : Up)
- public bool PictureBox_Drag_Shift = false;
- // 픽쳐박스 드래그하는 경우 모드 (true : 수직으로 , false : 수평으로)
- public bool PictureBox_Drag_Vertical = false;
- // 디바이스 조회창 색상 (연동되면 파랑)
- Color Apply_Color_HASH = Color.SteelBlue;
- Color Apply_Color_TEMP = Color.YellowGreen;
- Color Apply_Color_NOT = Color.White;
- // 연동 여부 대화 팝업창
- public Form Popup_DeviceOper = new Form();
- //
- // 맵디자이너 초기화
- //
- // 신규 이미지를 추가하는 경우와 맵디자이너가 켜져 있지 않는 상태에서 그림 수정을 선택하는 경우
- public Form_MapDesigner(string RECEIVER_ID, string PageNodeKey, string PageNodeText)
- {
- InitializeComponent();
- ///
- /// 이벤트
- ///
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing);
- // 윈도우 스타일 변경 이벤트 핸들러 등록
- _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
- // 메인 메뉴에서 그림 수정 이벤트 핸들러 등록
- _Event.PictrueEdit_NodeSeleted_SendMessage_Event += new _Event.PictrueEdit_NodeSeleted_SendMessage_Handler(_Event_PictrueEdit_NodeSeleted_SendMessage_Event);
- // 맵디자이너 창을 닫는 이벤트 핸들러 등록
- _Event.MapDesigner_Close_SendMessage_Event += new _Event.MapDesigner_Close_SendMessage_Handler(_Event_MapDesigner_Close_SendMessage_Event);
- ///
- /// 스타일 변경
- ///
- UI_Style_Initialize();
- ///
- /// 수신기 정보
- ///
- // 단, 수신기 정보없다면 이는 단순히 클래스 내부의 함수에 접근하기 위한 용도이니 필요없다
- if (RECEIVER_ID == null)
- return;
- else
- Seleted_RECEIVER_ID = RECEIVER_ID;
- ///
- /// 페이지 이름, 파일명, 파일경로
- ///
- Seleted_PageNodeKey = PageNodeKey;
- Seleted_PageNodeText = PageNodeText;
- if (PageNodeKey == null)
- {
- Default_Field_PageName = _Text.DEFAULT_FIELD_PAGENAME;
- Default_Field_FileName = _Text.DEFAULT_FIELD_FILENAME;
- }
- else
- {
- Default_Field_PageName = PageNodeText;
- Default_Field_FileName = ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PageNodeKey]).PictureBoxItem_BackGround.FileName;
- // 페이지명이 null 값이 아니라면 트리노드에 설정되어있는 그래픽노드중 1개를 선택했다는 뜻이다
- // 즉, 페이지명은 수정이 불가하다
- this.editBox_Base_PageName.ReadOnly = true;
- this.editBox_Base_PageName.BackColor = System.Drawing.SystemColors.MenuBar;
- this.editBox_Base_PageName.Text = PageNodeText;
- }
- // 수신기 폴더명
- string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + Seleted_RECEIVER_ID;
- Default_Field_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_MAPVIEW + "\\" + _Text.DEFAULT_FOLDER_FIELD;
- Default_Field_FullPath_FileName = Default_Field_FullPath + "\\" + Default_Field_FileName;
- Default_Symbol_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_MAPVIEW + "\\" + _Text.DEFAULT_FOLDER_SYMBOL;
- Default_Xml_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_MAPVIEW + "\\" + _Text.DEFAULT_FOLDER_XML;
- ///
- /// XML
- ///
- ITEM_XML_Initialize();
- ///
- /// 타이머
- ///
- _Timer_WindowBase.Delete("Form_MapDesigner");
- _Timer_WindowBase.Create("Form_MapDesigner", 1000, timer_MapDesignerConfig_Tick, true);
- ///
- /// UI 초기화
- ///
- UI_Base_Initialize(Default_Field_PageName, Default_Field_FileName, Default_Field_FullPath_FileName);
- UI_Item_Initialize(Default_Symbol_FullPath);
- UI_Device_Initialize();
- UI_Tree_Initialize();
- UI_Status_Initialize(Item_Type.BackGround, Default_Field_FullPath_FileName);
- UI_Work_Initialize(Default_Field_FullPath_FileName);
- ///
- /// 해쉬 및 리스트 초기화
- ///
- TEMP_HASH_LIST_Initialize();
- COPY_HASH_LIST_Initialize();
- ///
- /// 페이지 클래스에 저장된 정보를 토대로 화면에 표시
- ///
- if (PageNodeKey != null)
- {
- UI_DATA_Initialize(PageNodeKey);
- ///
- /// 아이템 아이디 셋팅
- ///
- /// 페이지에 있는 최대의 아이콘
- int MaxValue = 0;
- foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PageNodeKey]).LIST_ICON_ID)
- {
- if (MaxValue <= Int32.Parse(ICON_ID))
- MaxValue = Int32.Parse(ICON_ID);
- }
- ICON_ID_Order = MaxValue + 1;
- }
- // 화면 위치는 항상 모니터 최상단 (Left , Up)
- this.Location = new System.Drawing.Point(0, 0);
- this.StartPosition = FormStartPosition.Manual;
- }
- ///
- /// 기기타입 XML 파일 접근
- ///
- // XML 파일에 파일이 속해있는지 검사
- private bool Check_DevTypeXml_FileName(string filename)
- {
- foreach (string DevTypeID in _Data.LIST_XMLDEVTYPE_ID)
- {
- if (((_DevTypeXML)_Data.HASH_XMLDEVTYPE[DevTypeID]).FILENAME == filename)
- return true;
- }
- return false;
- }
- ///
- /// 파일정보 추출
- ///
- // XML 데이터 읽어오기
- private void ITEM_XML_Initialize()
- {
- // 초기화
- _Data.HASH_XMLDEVTYPE.Clear();
- _Data.LIST_XMLDEVTYPE_ID.Clear();
- // 현재 설정된 프로젝트명에 의해 폴더를 접근하여 DevType.xml 파일을 로드한다
- _File.Read_DevType_XML(Default_Xml_FullPath);
- }
- // 파일 포맷 가져오기
- private string Get_Image_Format(string FIleName)
- {
- try
- {
- string[] Temps = FIleName.Split('.');
- //예시 : test.txt => txt
- return Temps[1];
- }
- catch
- {
- return _Text.Null;
- }
- }
- // 파일 이름 가져오기
- private string Get_Image_RemoveFormat(string FIleName)
- {
- try
- {
- string[] Temps = FIleName.Split('.');
- //예시 : test.txt => test
- return Temps[0];
- }
- catch
- {
- return _Text.Null;
- }
- }
- // 파일 사이즈 가져오기
- private string Get_Image_Size(string FilePath)
- {
- try
- {
- string result = null;
- Image Info = Image.FromFile(FilePath);
- //예시 : Size : 1080 * 720"
- result = Info.Width + " * " + Info.Height;
- return result;
- }
- catch
- {
- return "0 * 0";
- }
- }
- // 파일 정보를 지정된 형식대로 가져오기
- private string Get_Image_Info(string FilePath)
- {
- try
- {
- // 파일정보
- string result = null;
- long FileLength_Kilobyte = 0;
- string FileName = null;
- if (_File.Read_FileInfo(FilePath) != null)
- {
- FileLength_Kilobyte = _File.Read_FileInfo(FilePath).Length;
- FileName = _File.Read_FileInfo(FilePath).Name;
- }
- // 3자리수 이상이라면
- if (FileLength_Kilobyte - 1000 >= 0)
- {
- string FileKilobyte = FileLength_Kilobyte.ToString();
- FileKilobyte = FileKilobyte.Remove(FileKilobyte.Length - 3);
- result = FileName + " / " + FileKilobyte + "K byte";
- }
- else
- {
- string Filebyte = FileLength_Kilobyte.ToString();
- result = FileName + " / " + Filebyte + " byte";
- }
- if (FileLength_Kilobyte == 0 || FileName == null)
- result = _Text.Null;
- return result;
- }
- catch
- {
- return _Text.Null;
- }
- }
- ///
- /// 초기화
- ///
- // 스타일 초기화 함수
- private void UI_Style_Initialize()
- {
- }
- // 기본 패널 초기화
- private void UI_Base_Initialize(string PageName, string Field_FileName, string Field_FullPath_FileName)
- {
- // 페이지명
- this.editBox_Base_PageName.Text = PageName;
- // 배경그림
- this.editBox_Base_BackgrondFileName.Text = Field_FileName;
- // 파일경로
- this.editBox_Base_BackgrondFilePath.Text = Field_FullPath_FileName;
- // 파일정보
- //this.label_Base_BackgrondFileInfo.Text =
- // "Format : " + Get_Image_Format(Field_FullPath_FileName) + " File / " +
- // "Size : " + Get_Image_Size(Field_FullPath_FileName);
- // 아이콘 잠금
- UI_Base_IconLock(false);
- }
- // 아이템 패널 초기화
- private void UI_Item_Initialize(string Symbol_FullPath)
- {
- // 이미지 경로
- string temp_path = Symbol_FullPath;
- // 파일명 리스트 가져오기
- string GetImageFileNameList = _File.Get_FileNameList(temp_path);
- // 파일명을 저장
- string[] FileNames = _Convert.String_to_ArrayString(GetImageFileNameList);
- // Construct the ImageList.
- ImageList ImageList_GetImages = new ImageList();
- // Set the ImageSize property to a larger size
- // (the default is 16 x 16).
- ImageList_GetImages.ImageSize = new Size(24, 24);
- if (FileNames != null)
- {
- // 리스트에 추가
- for (int i = 0; i < FileNames.Length; i++)
- {
- // 필요없는 파일은 올릴 필요가 없다
- if (Check_DevTypeXml_FileName(FileNames[i]) == true)
- {
- ImageList_GetImages.Images.Add(FileNames[i], this.Get_Image_From_File(temp_path + "\\" + FileNames[i]));
- }
- }
- }
- // 리스트뷰 초기화
- this.listView_Item.Clear();
- // 리스트뷰 이미지리스트 치환
- this.listView_Item.LargeImageList = ImageList_GetImages;
- // 이미지리스트가 존재하는 경우에만 리스트뷰에 추가
- if (ImageList_GetImages != null)
- {
- // 리스트에 추가
- for (int i = 0; i < ImageList_GetImages.Images.Count; i++)
- {
- ListViewItem a = new ListViewItem(ImageList_GetImages.Images.Keys[i], i);
- this.listView_Item.Items.Add(a);
- }
- }
- // 리스트뷰 정렬
- this.listView_Item.Sort();
- }
- // 디바이스 정보창 초기화
- private void UI_Device_Initialize()
- {
- //** UiComboBox_Board 콤보박스 셋팅
- // 먼저 UiComboBox_Board 콤보박스를 클리어시킴
- UiComboBox_Board.Items.Clear();
- DataRowCollection DB_TABLE_TB_BOARD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_BoardTable("1", "", "Y", Seleted_RECEIVER_ID));
- if (DB_TABLE_TB_BOARD != null)
- {
- // 공백도 하나 넣어둠
- UiComboBox_Board.Items.Add("");
- foreach (DataRow dr in DB_TABLE_TB_BOARD)
- {
- // UiComboBox_Board 콤보박스에 아이템 ADD
- UiComboBox_Board.Items.Add(dr[2]);
- }
- }
- UiComboBox_Board.Items.Sort(); // 정렬
- //** CheckedComboBox_DeviceType 콤보박스 셋팅
- // 먼저 CheckedComboBox_DeviceType 콤보박스를 클리어시킴
- CheckedComboBox_DeviceType.Clear();
- // TB_DEVICE_TYPE 테이블에 접근
- DataRowCollection DB_TABLE_TB_DEVICE_TYPE = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_DEVICE_TYPE", null));
- if (DB_TABLE_TB_DEVICE_TYPE != null && CheckedComboBox_DeviceType.DropDownList != null)
- {
- foreach (DataRow dr in DB_TABLE_TB_DEVICE_TYPE)
- {
- // GridEx에 내용 채우기
- GridEXRow row;
- row = CheckedComboBox_DeviceType.DropDownList.AddItem();
- row.BeginEdit();
- row.Cells["Device_Type"].Value = dr[1].ToString();
- row.EndEdit();
- }
- }
- //** UiComboBox_Device_InOut 콤보박스 셋팅
- UiComboBox_Device_InOut.Items.Clear();
- UiComboBox_Device_InOut.Items.Add("");
- UiComboBox_Device_InOut.Items.Add("IN");
- UiComboBox_Device_InOut.Items.Add("OUT");
- UiComboBox_Device_InOut.Items.Sort();// 정렬
- // 기본값 지정
- UiComboBox_Device_InOut.Text = "IN";
- UiComboBox_Board.Text = "1";
- UiComboBox_Channel.Text = "";
- // 배경색 지정
- string[] gridex_device_columnheader = _Gridex.Get_ColumnHeadersName(this.GridEX_Device);
- // 연동 적용된 아이템은 배경 색상이 변경된다 (HASH 혹은 TEMP 혹은 NOT)
- _Gridex.BackColorFormatCondition_Create(this.GridEX_Device, Apply_Color_HASH, gridex_device_columnheader, "Apply", "HASH");
- _Gridex.BackColorFormatCondition_Create(this.GridEX_Device, Apply_Color_TEMP, gridex_device_columnheader, "Apply", "TEMP");
- _Gridex.BackColorFormatCondition_Create(this.GridEX_Device, Apply_Color_NOT, gridex_device_columnheader, "Apply", "NOT");
- }
- // 오브젝트 트리 초기화
- private void UI_Tree_Initialize()
- {
- // 초기화
- this.treeView_ObjectTree.Nodes.Clear();
- // 버튼 아이콘 노드와 디바이스 아이콘 노드를 추가하고
- // 버튼이 삽입되면 트리에 표시하고, 디바이스가 삽입되면 트리에 표시된다
- // 버튼이 삭제되면 트리에서 삭제하고, 디바이스가 삭제되면 트리에서 삭제된다
- // 버튼의 경우 점프 페이지가 설정되면 트리에 표시된다
- // 디바이스의 경우 연동이 설정되면 트리에 표시된다
- // 루트 노드 추가 : 페이지 이름
- _Tree.NodeAdd_Root(this.treeView_ObjectTree, _Text.UI_TREE_ROOT_KEY, this.editBox_Base_PageName.Text, Object_Type.PAGE);
- // 버튼 아이콘 노드 추가 : 버튼 아이콘 메인
- _Tree.NodeAdd_Root_Node(this.treeView_ObjectTree, 0, _Text.UI_TREE_BUTTON_ICON, _Text.UI_TREE_BUTTON_ICON, Object_Type.BUTTON_ICON);
- // 디바이스 아이콘 노드 추가 : 디바이스 아이콘 메인
- _Tree.NodeAdd_Root_Node(this.treeView_ObjectTree, 0, _Text.UI_TREE_DEVICE_ICON, _Text.UI_TREE_DEVICE_ICON, Object_Type.DEVICE_ICON);
- // 트리 노드 확장
- this.treeView_ObjectTree.ExpandAll();
- // 트리 노드 정렬
- this.treeView_ObjectTree.Sort();
- }
- // 작업화면 초기화 (배경화면)
- private void UI_Work_Initialize(string FullPath_PlusFileName)
- {
- // 그림을 전체 모드로 교체 (픽쳐박스의 크기에 따라 이미지 사이즈가 자동조절)
- pictureBox_Background.SizeMode = PictureBoxSizeMode.StretchImage;
- // 파일경로 + 파일명
- pictureBox_Background.BackgroundImage = Get_Image_From_File(FullPath_PlusFileName);
- // 갱신
- pictureBox_Background.ResumeLayout();
- // 선택취소
- Selected_PictureBoxItem = null;
- }
- // 상태창 초기화
- private void UI_Status_Initialize(Item_Type itemType, string Item_Full_Path)
- {
- // 파일정보
- this.label_Status_Info.Text = Get_Image_Info(Item_Full_Path);
- // 타입
- this.label_Status_IconType.Text = itemType.ToString();
- // 디바이스
- this.label_Status_Device.Text = _Text.None;
- // X
- this.editBox_Status_Location_X.Text = pictureBox_Background.Location.X.ToString();
- // Y
- this.editBox_Status_Location_Y.Text = pictureBox_Background.Location.Y.ToString();
- // W
- this.editBox_Status_Size_W.Text = pictureBox_Background.Width.ToString();
- // H
- this.editBox_Status_Size_H.Text = pictureBox_Background.Height.ToString();
- // JUMP
- this.uiComboBox_Status_Jump.Text = _Text.None;
- }
- ///
- /// 리스트 초기화
- ///
- // 저장직전 해쉬 및 리스트
- private void TEMP_HASH_LIST_Initialize()
- {
- // 디바이스 아이콘 및 버튼 아이콘 전체 삭제
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Dispose();
- }
- TEMP_LIST_ICON_ID.Clear();
- TEMP_HASH_ICON.Clear();
- }
- // 복사용 해쉬 및 리스트
- private void COPY_HASH_LIST_Initialize()
- {
- // 디바이스 아이콘 및 버튼 아이콘 전체 삭제
- foreach (string ICON_ID in COPY_LIST_ICON_ID)
- {
- ((_PictureBoxItem)COPY_HASH_ICON[ICON_ID]).Dispose();
- }
- COPY_LIST_ICON_ID.Clear();
- COPY_HASH_ICON.Clear();
- }
- ///
- /// 데이터를 토대로 화면에 표시
- ///
- public void UI_DATA_Initialize(string PageName)
- {
- // 임시 리스트 및 해쉬 테이블을 만듬 -> 차후 TEMP_LIST_ICON_ID,TEMP_HASH_ICON 생성에서 사용함
- ArrayList temp_list_icon_id = new ArrayList();
- Hashtable temp_hash_icon = new Hashtable();
- // 저장 정보를 토대로 리스트 및 해쉬 생성 - 불러오기
- Copy_HASH_LIST(
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[PageName]).LIST_ICON_ID,
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[PageName]).HASH_ICON,
- temp_list_icon_id,
- temp_hash_icon);
- // 해쉬테이블에서 매칭한다
- foreach (string ICON_ID in temp_list_icon_id)
- {
- // 아이템 화면 배치
- _PictureBoxItem PictureBoxItem = UI_Create_PictureBoxItem(
- this.pictureBox_Background,
- ((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType,
- ((_PictureBoxItem)temp_hash_icon[ICON_ID]).FullPath_FileName,
- ((_PictureBoxItem)temp_hash_icon[ICON_ID]).FileName,
- ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name,
- ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.X,
- ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.Y);
- if (PictureBoxItem != null)
- {
- ///
- /// 동적 할당 변수 처리
- ///
- // 디바이스 연동 회로 번호
- if (PictureBoxItem.ItemType == Item_Type.Device)
- {
- PictureBoxItem.Device_Oper_ID = ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_Oper_ID;
- PictureBoxItem.Device_DB_Name = ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_DB_Name;
- }
- // 점프 페이지
- if (PictureBoxItem.ItemType == Item_Type.Button)
- PictureBoxItem.Button_JumpPageName = ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName;
- ///
- /// 오브젝트 트리에 추가
- ///
- // 버튼 아이콘의 경우
- if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Button)
- {
- // 트리 추가
- _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 0, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).NodeText(), Object_Type.BUTTON_DETAIL);
- // 오브젝트 트리 색상 반영 (버튼)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName);
- }
- // 디바이스 아이콘의 경우
- else if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Device)
- {
- // 트리 추가
- _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 1, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).NodeText(), Object_Type.DEVICE_DETAIL);
- // 오브젝트 트리 색상 반영 (디바이스)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_Oper_ID);
- }
- // 해쉬 추가
- if (_Hash.Add(TEMP_HASH_ICON, PictureBoxItem.Name, PictureBoxItem) == true)
- {
- TEMP_LIST_ICON_ID.Add(PictureBoxItem.Name);
- }
- }
- }
- // 디바이스 조회창 색상 반영
- GridexDevice_ChangeColor_By_HASH();
- // 트리는 초기화 작업시 무조건 확장
- this.treeView_ObjectTree.ExpandAll();
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- public Image Get_Image_From_File(string FilePath)
- {
- try
- {
- return Image.FromFile(FilePath);
- }
- catch
- {
- return null;
- }
- }
- ///
- /// 픽쳐박스 생성부
- ///
- public _PictureBoxItem UI_Create_PictureBoxItem(
- PictureBox PictureBox_BackGround,
- Item_Type type, // 아이콘 타입
- string FullPath_FileName, // 파일경로+파일명
- string FileName, // 파일명
- string UI_Create_PictureBoxItem_ID, // 픽쳐박스 순번 (숫자로 저장되는 고유 아이디이다. 단, xml 저장시에는 버튼은 B 접두사를 붙임)
- int Location_X, // 위치 X 좌표
- int Location_Y) // 위치 Y 좌표
- {
- // PictureBox 기본 정보 설정
- _PictureBoxItem PictureBoxItem = new _PictureBoxItem();
- // 이미지
- PictureBoxItem.Image = Get_Image_From_File(FullPath_FileName);
- // 이미지가 널값이라면 무시하자
- if (PictureBoxItem.Image == null)
- return null;
- // ID
- // 픽쳐박스 순번 (숫자로 저장되는 고유 아이디)
- PictureBoxItem.Name = UI_Create_PictureBoxItem_ID;
- // 타입
- PictureBoxItem.ItemType = type;
- // 파일정보
- PictureBoxItem.Info = Get_Image_Info(FullPath_FileName);
- // 아이콘 아이디
- if (type == Item_Type.Device)
- {
- PictureBoxItem.Device_Icon_ID = ((_DevTypeXML)_File.Read_DevType_By_FileName(FileName)).ID;
- PictureBoxItem.Device_Icon_NAME = ((_DevTypeXML)_File.Read_DevType_By_FileName(FileName)).NAME;
- }
- // 드래그 상태
- PictureBoxItem.MouseDrag_Status = false;
- // 드래그 X 좌표
- PictureBoxItem.MouseDown_X = 0;
- // 드래그 Y 좌표
- PictureBoxItem.MouseDown_Y = 0;
- // 파일 이름
- PictureBoxItem.FileName = FileName;
- // 파일 경로
- PictureBoxItem.FullPath_FileName = FullPath_FileName;
- // 이미지를 크기에 맞게 셋팅
- PictureBoxItem.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
- // 위치
- PictureBoxItem.Location = new System.Drawing.Point(Location_X, Location_Y);
- // 사이즈
- PictureBoxItem.Size = new System.Drawing.Size(PictureBoxItem.Image.Width, PictureBoxItem.Image.Height);
- // 배경을 제외한 나머지는 아래의 속성을 받는다
- if (type != Item_Type.BackGround)
- {
- // 배경보다 작아야 한다
- if (PictureBoxItem.Image.Width >= PictureBox_BackGround.Size.Width || PictureBoxItem.Image.Height >= PictureBox_BackGround.Size.Height)
- return null;
- // 일반 픽쳐박스 속성 지정
- PictureBoxItem.BackColor = Color.Transparent;
- PictureBoxItem.Parent = PictureBox_BackGround;// 부모는 항상 백그라운드
- PictureBoxItem.MouseDown += new MouseEventHandler(pictureBox_Create_MouseDown);
- PictureBoxItem.MouseUp += new MouseEventHandler(pictureBox_Create_MouseUp);
- PictureBoxItem.MouseMove += new MouseEventHandler(pictureBox_Create_MouseMove);
- PictureBoxItem.MouseClick += new MouseEventHandler(pictureBox_Create_MouseClick);
- // 외부 선
- PictureBoxItem.Selected = false; // 생성당시에는 선택된 상태가 아님
- PictureBoxItem.ShapeContainer_Seleted = new ShapeContainer();
- PictureBoxItem.LineShape_TOP = new LineShape();
- PictureBoxItem.LineShape_LEFT = new LineShape();
- PictureBoxItem.LineShape_RIGHT = new LineShape();
- PictureBoxItem.LineShape_BOTTOM = new LineShape();
- // 선 스타일 지정
- LineShape_Item_BorderStyle(PictureBoxItem, Selected_DashStyle_First, Selected_Color, Selected_BorderWidth_Item);
- // TOP
- LineShape_Start(PictureBoxItem.LineShape_TOP, 0, 0);
- LineShape_End(PictureBoxItem.LineShape_TOP, PictureBoxItem.Size.Width, 0);
- // LEFT
- LineShape_Start(PictureBoxItem.LineShape_LEFT, 0, 0);
- LineShape_End(PictureBoxItem.LineShape_LEFT, 0, PictureBoxItem.Size.Height);
- // RIGHT
- LineShape_Start(PictureBoxItem.LineShape_RIGHT, PictureBoxItem.Size.Width - 1, 0);
- LineShape_End(PictureBoxItem.LineShape_RIGHT, PictureBoxItem.Size.Width - 1, PictureBoxItem.Size.Height);
- // BOTTM
- LineShape_Start(PictureBoxItem.LineShape_BOTTOM, 0, PictureBoxItem.Size.Height - 1);
- LineShape_End(PictureBoxItem.LineShape_BOTTOM, PictureBoxItem.Size.Width, PictureBoxItem.Size.Height - 1);
- // 컨테이너에 상위 4개 선 포함
- PictureBoxItem.ShapeContainer_Seleted.Shapes.AddRange(new Microsoft.VisualBasic.PowerPacks.Shape[]
- {
- PictureBoxItem.LineShape_TOP,PictureBoxItem.LineShape_LEFT,PictureBoxItem.LineShape_RIGHT,PictureBoxItem.LineShape_BOTTOM,
- });
- // 배경그림에 컨테이너 포함
- PictureBoxItem.Controls.Add(PictureBoxItem.ShapeContainer_Seleted);
- // 선택하면 표시하도록 한다
- PictureBoxItem.ShapeContainer_Seleted.Visible = false;
- }
- PictureBoxItem.ResumeLayout();
- return PictureBoxItem;
- }
- ///
- /// 이벤트
- ///
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- public void CreateForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- // 윈도우 스타일 변경 이벤트 핸들러 해제
- _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
- // 메인 메뉴에서 그림 수정 이벤트 핸들러 해제
- _Event.PictrueEdit_NodeSeleted_SendMessage_Event -= new _Event.PictrueEdit_NodeSeleted_SendMessage_Handler(_Event_PictrueEdit_NodeSeleted_SendMessage_Event);
- // 맵디자이너 창을 닫는 이벤트 핸들러 해제
- _Event.MapDesigner_Close_SendMessage_Event -= new _Event.MapDesigner_Close_SendMessage_Handler(_Event_MapDesigner_Close_SendMessage_Event);
- // 워크뷰 그래픽 개요 페이지로 전환
- _Event.WorkViewPageName_SendMessage_Write(Seleted_RECEIVER_ID, Object_Type.IMAGE, null, null);
- }
- // 윈도우 스타일 변경 이벤트
- public void _Event_WindowStyleSet_SendMessage_Event()
- {
- UI_Style_Initialize();
- }
- // 메인에서 맵디자이너가 켜져 있는 상태에서 그래픽 노드의 페이지 노드를 선택하여 오른쪽 마우스 버튼 메뉴중 그림 수정 버튼을 누르는 경우
- public void _Event_PictrueEdit_NodeSeleted_SendMessage_Event(_RECEIVER RECEIVER, string PageName)
- {
- ///
- /// 페이지 이름, 파일명, 파일경로
- ///
- // 수신기
- Seleted_RECEIVER_ID = RECEIVER.ID;
- if (PageName == null)
- {
- Default_Field_PageName = _Text.DEFAULT_FIELD_PAGENAME;
- Default_Field_FileName = _Text.DEFAULT_FIELD_FILENAME;
- }
- else
- {
- Default_Field_PageName = PageName;
- Default_Field_FileName = ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).HASH_PAGE[PageName]).PictureBoxItem_BackGround.FileName;
- // 페이지명이 null 값이 아니라면 트리노드에 설정되어있는 그래픽노드중 1개를 선택했다는 뜻이다
- // 즉, 페이지명은 수정이 불가하다
- this.editBox_Base_PageName.ReadOnly = true;
- this.editBox_Base_PageName.BackColor = System.Drawing.SystemColors.MenuBar;
- this.editBox_Base_PageName.Text = PageName;
- }
- // 수신기 폴더명
- string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER.ID;
- Default_Field_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_MAPVIEW + "\\" + _Text.DEFAULT_FOLDER_FIELD;
- Default_Field_FullPath_FileName = Default_Field_FullPath + "\\" + Default_Field_FileName;
- Default_Symbol_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_MAPVIEW + "\\" + _Text.DEFAULT_FOLDER_SYMBOL;
- Default_Xml_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_MAPVIEW + "\\" + _Text.DEFAULT_FOLDER_XML;
- ///
- /// UI 초기화
- ///
- UI_Base_Initialize(Default_Field_PageName, Default_Field_FileName, Default_Field_FullPath_FileName);
- UI_Item_Initialize(Default_Symbol_FullPath);
- UI_Device_Initialize();
- UI_Tree_Initialize();
- UI_Status_Initialize(Item_Type.BackGround, Default_Field_FullPath_FileName);
- UI_Work_Initialize(Default_Field_FullPath_FileName);
- ///
- /// 해쉬 및 리스트 초기화
- ///
- TEMP_HASH_LIST_Initialize();
- COPY_HASH_LIST_Initialize();
- ///
- /// 페이지 클래스에 저장된 정보를 토대로 화면에 표시
- ///
- if (PageName != null)
- {
- UI_DATA_Initialize(PageName);
- ///
- /// 아이템 아이디 셋팅
- ///
- /// 페이지에 있는 최대의 아이콘
- int MaxValue = 0;
- foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).HASH_PAGE[PageName]).LIST_ICON_ID)
- {
- if (MaxValue <= Int32.Parse(ICON_ID))
- MaxValue = Int32.Parse(ICON_ID);
- }
- ICON_ID_Order = MaxValue + 1;
- }
- // 최대화 혹은 최소화 된 창을 일반으로 돌리고 포커스를 줌
- this.WindowState = FormWindowState.Normal;
- this.Focus();
- }
- // 맵디자이너 창을 닫는 이벤트 전용 델리게이트
- delegate void Close_SetCallback();
- // 맵디자이너 창을 닫는 이벤트
- public void _Event_MapDesigner_Close_SendMessage_Event()
- {
- if (this.InvokeRequired)
- {
- Close_SetCallback d = new Close_SetCallback(_Event_MapDesigner_Close_SendMessage_Event);
- this.Invoke(d, new object[] { });
- }
- else
- {
- this.Close();
- }
- }
- ///
- /// 기본
- ///
- // 기본 - 배경화면 열기 버튼
- private void uiButton_Base_BackgrondFileName_Click(object sender, EventArgs e)
- {
- OpenFileDialog openFileDialog = new OpenFileDialog();
- // 배경 삽입시에 다이얼로그창은 프로젝트 경로에 따라서 Field 폴더에 곧바로 접근할 수있도록 함
- openFileDialog.InitialDirectory = Default_Field_FullPath;
- if (openFileDialog.ShowDialog() == DialogResult.OK)
- {
- // 기본 패널 초기화
- UI_Base_Initialize(this.editBox_Base_PageName.Text, openFileDialog.SafeFileName, openFileDialog.FileName);
- // 작업화면 초기화
- UI_Work_Initialize(openFileDialog.FileName);
- // 상태창 초기화
- UI_Status_Initialize(Item_Type.BackGround, openFileDialog.FileName);
- }
- }
- // 기본 - 페이지명 체크
- private bool Check_PageName(string PageNameText)
- {
- // 페이지이름
- string PageName = PageNameText.Trim();
- // 널값 허용안함
- if (PageName.Length == 0 || PageName == null)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 300, 150, _Text.NullPageNameInform, 0);
- return false;
- }
- // 동일한 페이지 이름은 허용안함
- if (((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE.Contains(PageName) == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 300, 150, _Text.ContainPageNameInform, 0);
- return false;
- }
- return true;
- }
- // 페이지명 트리에 반영
- private void uiButton_PageName_Edit_Click(object sender, EventArgs e)
- {
- // 페이지명 체크
- if (Check_PageName(this.editBox_Base_PageName.Text) == false)
- return;
- // 트리에 반영
- TreeNode PageName = _Tree.GetNode_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_ROOT_KEY);
- PageName.Text = this.editBox_Base_PageName.Text;
- }
- // 기본 - 저장 버튼
- private void uiButton_Base_Save_Click(object sender, EventArgs e)
- {
- // 그래픽 노드를 선택해서 맵디자이너를 여는 경우
- if (this.editBox_Base_PageName.ReadOnly == true)
- {
- // 대화 팝업
- DialogPopup = _Popup.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 350, 150,
- _Text.LeftBracket + this.editBox_Base_PageName.Text + _Text.RightBracket + _Text.Blank + _Text.PageEditDataInform, 0);
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event += new _Event.PopupClose_SendMessage_Handler(_Event_PopupClose_SendMessage_Event_Edit);
- }
- // 새로운 페이지를 저장하는 경우
- else
- {
- // 오브젝트 트리의 페이지명과 저장시에 페이지 명이 틀린 경우
- if (this.editBox_Base_PageName.Text != this.treeView_ObjectTree.Nodes[0].Text)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 300, 150, _Text.PageNameNotSameObjectTree, 0);
- return;
- }
- // 신규로 저장하는 경우 페이지명이 기존에 있는 페이지와 일치하면 수정이다
- // 덮어쓰기
- if (_Data.Check_Receiver_In_PageName(Seleted_RECEIVER_ID, this.editBox_Base_PageName.Text) == true)
- {
- // 대화 팝업
- DialogPopup = _Popup.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 350, 150,
- _Text.LeftBracket + this.editBox_Base_PageName.Text + _Text.RightBracket + _Text.Blank + _Text.PageEditDataInform, 0);
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event += new _Event.PopupClose_SendMessage_Handler(_Event_PopupClose_SendMessage_Event_Edit);
- }
- // 신규
- else
- {
- // 대화 팝업
- DialogPopup = _Popup.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 350, 150,
- _Text.LeftBracket + this.editBox_Base_PageName.Text + _Text.RightBracket + _Text.Blank + _Text.PageSaveDataInform, 0);
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event += new _Event.PopupClose_SendMessage_Handler(_Event_PopupClose_SendMessage_Event_New);
- }
- }
- }
- // 기본 - 저장 버튼 -> 신규
- private void _Event_PopupClose_SendMessage_Event_New(object sender, object etc)
- {
- // 대화 팝업 주체
- Form DialogPopup = (Form)sender;
- // 팝업창에서 확인 버튼을 누르면
- if (DialogPopup.Name == DialogPopup.Name && etc.ToString() == _Text.OK)
- {
- // 무조건 편집 혹은 새로만들기의 경우 차후 저장을 위해 셋팅
- if (_Data.LIST_XmlDBNotSave_Receiver.Contains(Seleted_RECEIVER_ID) == false)
- _Data.LIST_XmlDBNotSave_Receiver.Add(Seleted_RECEIVER_ID);
- // 페이지명 및 배경그림 안에 있는 픽쳐박스를 전부 해쉬에 저장 해야한다
- // 차후 프로젝트 저장시에 XML 파일이 생성될 수 있도록 한다
- _Page Page = new _Page();
- // 페이지명 (중복되지 않는 고유의 아이디로 사용함)
- string Item_ID = Page.NodeKey = _Data.CREATE_PAGE_ID(Seleted_RECEIVER_ID, this.editBox_Base_PageName.Text); //Seleted_RECEIVER_ID + _Text.Minus + this.editBox_Base_PageName.Text;
- Page.NodeText = this.editBox_Base_PageName.Text;
- // 관할 수신기 아이디
- Page.Receiver_ID = Seleted_RECEIVER_ID;
- // 배경그림
- Page.PictureBoxItem_BackGround = UI_Create_PictureBoxItem(
- this.pictureBox_Background,
- Item_Type.BackGround,
- this.editBox_Base_BackgrondFilePath.Text,
- this.editBox_Base_BackgrondFileName.Text,
- Item_ID,
- 0, 0);
- if (Page.PictureBoxItem_BackGround != null)
- {
- // 해쉬 추가
- if (_Hash.Add(((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE, Item_ID, Page) == true)
- {
- ((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).LIST_PAGE_ID.Add(Item_ID);
- }
- // 추가된 아이콘 (디바이스 아이콘 혹은 버튼 아이콘) 모두 저장 - 신규저장
- Copy_HASH_LIST(
- TEMP_LIST_ICON_ID,
- TEMP_HASH_ICON,
- Page.LIST_ICON_ID,
- Page.HASH_ICON);
- // 확인 메세지
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 300, 150, _Text.PageSaveData_TreeNodeInform, 0);
- // 메인 창의 페이지 노드를 트리에 추가한다
- _Event.TreeView_PageNodeSet_SendMessage_Write(Seleted_RECEIVER_ID, Page);
- // UI 정리
- uiButton_Device_Clear_Click(null, null);
- }
- }
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event -= new _Event.PopupClose_SendMessage_Handler(_Event_PopupClose_SendMessage_Event_New);
- }
- // 저장용도로 사용되는 리스트와 해쉬테이블에 작업완료한 리스트와 해쉬테이블을 복사한다
- public void Copy_HASH_LIST(ArrayList Temp_List, Hashtable Temp_Hash, ArrayList Save_List, Hashtable Save_Hash)
- {
- foreach (string ICON_ID in Temp_List)
- {
- // 리스트 추가
- Save_List.Add(ICON_ID);
- // 아이템 정보 읽기
- _PictureBoxItem PictureBoxItem = new _PictureBoxItem();
- // 타입
- PictureBoxItem.ItemType = ((_PictureBoxItem)Temp_Hash[ICON_ID]).ItemType;
- // 파일정보
- PictureBoxItem.Info = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Info;
- // 디바이스 아이콘 아이디 (DevType.XML)
- PictureBoxItem.Device_Icon_ID = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Device_Icon_ID;
- // 디바이스 아이콘 이름 (DevType.XML)
- PictureBoxItem.Device_Icon_NAME = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Device_Icon_NAME;
- // 드래그 상태
- PictureBoxItem.MouseDrag_Status = ((_PictureBoxItem)Temp_Hash[ICON_ID]).MouseDrag_Status;
- // 드래그 X 좌표
- PictureBoxItem.MouseDown_X = ((_PictureBoxItem)Temp_Hash[ICON_ID]).MouseDown_X;
- // 드래그 Y 좌료
- PictureBoxItem.MouseDown_Y = ((_PictureBoxItem)Temp_Hash[ICON_ID]).MouseDown_Y;
- // 파일 이름
- PictureBoxItem.FileName = ((_PictureBoxItem)Temp_Hash[ICON_ID]).FileName;
- // 파일 경로
- PictureBoxItem.FullPath_FileName = ((_PictureBoxItem)Temp_Hash[ICON_ID]).FullPath_FileName;
- // 현재 선택여부
- PictureBoxItem.Selected = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Selected;
- // 선택하는 경우 외부 테두리
- PictureBoxItem.ShapeContainer_Seleted = ((_PictureBoxItem)Temp_Hash[ICON_ID]).ShapeContainer_Seleted;
- PictureBoxItem.LineShape_TOP = ((_PictureBoxItem)Temp_Hash[ICON_ID]).LineShape_TOP;
- PictureBoxItem.LineShape_BOTTOM = ((_PictureBoxItem)Temp_Hash[ICON_ID]).LineShape_BOTTOM;
- PictureBoxItem.LineShape_LEFT = ((_PictureBoxItem)Temp_Hash[ICON_ID]).LineShape_LEFT;
- PictureBoxItem.LineShape_RIGHT = ((_PictureBoxItem)Temp_Hash[ICON_ID]).LineShape_RIGHT;
- // 이미지
- PictureBoxItem.Image = Image.FromFile(PictureBoxItem.FullPath_FileName);
- // 이미지를 크기에 맞게 셋팅
- PictureBoxItem.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
- // 위치
- PictureBoxItem.Location = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Location;
- // 사이즈
- if (PictureBoxItem.Image == null) PictureBoxItem.Size = new System.Drawing.Size(0, 0);
- else PictureBoxItem.Size = new System.Drawing.Size(PictureBoxItem.Image.Width, PictureBoxItem.Image.Height);
- // 이름
- PictureBoxItem.Name = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Name;
- // 디바이스 아이콘
- if (PictureBoxItem.ItemType == Item_Type.Device)
- {
- // 데이타베이스 디바이스 명칭
- PictureBoxItem.Device_DB_Name = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Device_DB_Name;
- // 연동 회로 번호
- PictureBoxItem.Device_Oper_ID = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Device_Oper_ID;
- }
- // 버튼 아이콘
- else if (PictureBoxItem.ItemType == Item_Type.Button)
- {
- // 점프 페이지 (문자열로 저장되는 페이지 이름이다. 단, xml 저장시에는 페이지 아이디로 저장됨)
- PictureBoxItem.Button_JumpPageName = ((_PictureBoxItem)Temp_Hash[ICON_ID]).Button_JumpPageName;
- }
- // 해쉬테이블 추가
- Save_Hash.Add(ICON_ID, PictureBoxItem);
- }
- }
- // 기존의 내용을 편집해서 저장하는 경우
- private void _Event_PopupClose_SendMessage_Event_Edit(object sender, object etc)
- {
- // 대화 팝업 주체
- Form DialogPopup = (Form)sender;
- // 팝업창에서 확인 버튼을 누르면
- if (DialogPopup.Name == DialogPopup.Name && etc.ToString() == _Text.OK)
- {
- // 무조건 편집 혹은 새로만들기의 경우 차후 저장을 위해 셋팅
- if (_Data.LIST_XmlDBNotSave_Receiver.Contains(Seleted_RECEIVER_ID) == false)
- _Data.LIST_XmlDBNotSave_Receiver.Add(Seleted_RECEIVER_ID);
- // 페이지명 및 배경그림 안에 있는 픽쳐박스를 전부 해쉬에 저장 해야한다
- // 차후 프로젝트 저장시에 XML 파일이 생성될 수 있도록 한다
- //_Page Page = new _Page();
- // 페이지명 (중복되지 않는 고유의 아이디로 사용함)
- Seleted_PageNodeKey = _Data.CREATE_PAGE_ID(Seleted_RECEIVER_ID, this.editBox_Base_PageName.Text); // 페이지를 새로 생성한후에 페이키값이 없다
- Seleted_PageNodeText = this.editBox_Base_PageName.Text;
- string Item_ID = Seleted_PageNodeKey;
- // 배경그림을 다시 저장
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[Item_ID]).PictureBoxItem_BackGround = UI_Create_PictureBoxItem(
- this.pictureBox_Background,
- Item_Type.BackGround,
- this.editBox_Base_BackgrondFilePath.Text,
- this.editBox_Base_BackgrondFileName.Text,
- Item_ID,
- 0, 0);
- if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[Item_ID]).PictureBoxItem_BackGround != null)
- {
- // 해쉬 추가
- //if (_Hash.Add(_Data.HASH_PAGE, Item_ID, Page) == true)
- //{
- // _Data.LIST_PAGE_ID.Add(Item_ID);
- //}
- // 특별히 수정하려는 페이지에서 저장하는 경우에는 기존의 리스트 및 해쉬를 초기화하고 복사를 진행하자
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[Item_ID]).LIST_ICON_ID.Clear();
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[Item_ID]).HASH_ICON.Clear();
- // 추가된 아이콘 (디바이스 아이콘 혹은 버튼 아이콘) 모두 저장 - 기존 내용 편집
- Copy_HASH_LIST(
- TEMP_LIST_ICON_ID,
- TEMP_HASH_ICON,
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[Item_ID]).LIST_ICON_ID,
- ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[Item_ID]).HASH_ICON);
- // 확인 메세지
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 300, 150, _Text.PageEditData_TreeNodeInform, 0);
- // 메인 창의 페이지 노드를 트리에 추가한다
- //_Event.TreeView_PageNodeSet_SendMessage_Write(Seleted_RECEIVER, Page);
- // UI 정리
- uiButton_Device_Clear_Click(null, null);
- }
- }
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event -= new _Event.PopupClose_SendMessage_Handler(_Event_PopupClose_SendMessage_Event_Edit);
- }
- ///
- /// 리스트뷰
- ///
- // 리스트뷰의 아이템(디바이스 아이콘) 더블클릭하면 아이템이 작업화면에 보여진다
- private void listView_Item_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- // Work 패널 포커스 이동
- this.uiPanel_Work.Focus();
- // 아이템이 새롭게 추가되면 선택되엇던 아이템이 모두 선택 해제된다
- pictureBox_SeletedStatusInitialize();
- // 선택
- Selected_PictureBoxItem = null;
- ListView ListViewItem = (ListView)sender;
- // 아이템 아이디
- string Item_ID = ICON_ID_Order++.ToString();
- // 파일경로, 아이디, 위치, 사이즈 지정
- _PictureBoxItem PictureBoxItem = UI_Create_PictureBoxItem(
- this.pictureBox_Background,
- Item_Type.Device,
- Default_Symbol_FullPath + "\\" + ListViewItem.FocusedItem.Text,
- ListViewItem.FocusedItem.Text,
- Item_ID,
- 0, 0);
- // 사이즈 제한
- if (PictureBoxItem == null)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 450, 150, _Text.SizeLimitOrEtcError, 0);
- return;
- }
- // 해쉬 추가
- if (_Hash.Add(TEMP_HASH_ICON, Item_ID, PictureBoxItem) == true)
- {
- TEMP_LIST_ICON_ID.Add(Item_ID);
- }
- // 상태바 갱신
- UI_Status_Write(PictureBoxItem);
- // 오브젝트 트리에 추가 - 디바이스
- _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 1, Item_ID, PictureBoxItem.NodeText(), Object_Type.DEVICE_DETAIL);
- this.treeView_ObjectTree.ExpandAll();
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- // 리스트뷰의 아이템 클릭하면 상태바가 갱신된다
- private void listView_Item_MouseClick(object sender, MouseEventArgs e)
- {
- // 아이템이 새롭게 추가되면 선택되엇던 아이템이 모두 선택 해제된다
- pictureBox_SeletedStatusInitialize();
- // 선택
- Selected_PictureBoxItem = null;
- ListView item = (ListView)sender;
- _PictureBoxItem PictureBoxItem = new _PictureBoxItem();
- // 타입
- PictureBoxItem.ItemType = Item_Type.Device;
- // 파일정보
- PictureBoxItem.Info = Get_Image_Info(Default_Symbol_FullPath + "\\" + item.FocusedItem.Text);
- // 드래그 상태
- PictureBoxItem.MouseDrag_Status = false;
- // 드래그 X 좌표
- PictureBoxItem.MouseDown_X = 0;
- // 드래그 Y 좌표
- PictureBoxItem.MouseDown_Y = 0;
- // 점프페이지
- PictureBoxItem.Button_JumpPageName = null;
- // 픽쳐박스에서 상속
- PictureBoxItem.Location = new System.Drawing.Point(0, 0);
- PictureBoxItem.Size = new System.Drawing.Size(24, 24);
- // 상태바 갱신
- UI_Status_Write(PictureBoxItem);
- }
- ///
- /// 상태창 변경
- ///
- // 파일정보를 표시하는 경우
- private void UI_Status_Write(_PictureBoxItem PictureBoxItem)
- {
- // 파일정보
- this.label_Status_Info.Text = PictureBoxItem.Info;
- // 아이콘 타입
- this.label_Status_IconType.Text = Convert.ToString(PictureBoxItem.ItemType);
- // 디바이스 연동 회로 아이디
- this.label_Status_Device.Text = PictureBoxItem.Device_Oper_ID;
- // X
- this.editBox_Status_Location_X.Text = PictureBoxItem.Location.X.ToString();
- // Y
- this.editBox_Status_Location_Y.Text = PictureBoxItem.Location.Y.ToString();
- // W
- this.editBox_Status_Size_W.Text = PictureBoxItem.Width.ToString();
- // H
- this.editBox_Status_Size_H.Text = PictureBoxItem.Height.ToString();
- // JUMP
- this.uiComboBox_Status_Jump.Text = PictureBoxItem.Button_JumpPageName;
- }
- // 파일정보를 표시하는 경우 (좌표만 갱신하는 경우, 부하를 막기 위해 마우스 move 이벤트에서만 동작하도록 한다)
- private void UI_Status_Write(int x, int y)
- {
- // X
- this.editBox_Status_Location_X.Text = x.ToString();
- // Y
- this.editBox_Status_Location_Y.Text = y.ToString();
- }
- // 파일정보를 표시하지 않아도 되는 경우
- private void UI_Status_Clear()
- {
- // 파일정보
- this.label_Status_Info.Text = _Text.None;
- // 타입
- this.label_Status_IconType.Text = _Text.None;
- // 디바이스
- this.label_Status_Device.Text = _Text.None;
- // X
- this.editBox_Status_Location_X.Text = _Text.Zero;
- // Y
- this.editBox_Status_Location_Y.Text = _Text.Zero;
- // W
- this.editBox_Status_Size_W.Text = _Text.Zero;
- // H
- this.editBox_Status_Size_H.Text = _Text.Zero;
- // JUMP
- this.uiComboBox_Status_Jump.Text = _Text.None;
- }
- ///
- /// 아이템 (디바이스 아이콘 혹은 버튼 아이콘 ) 마우스 이벤트 처리부
- ///
- // 모든 픽쳐박스 선택 해제
- private void pictureBox_SeletedStatusInitialize()
- {
- // 버튼 선택 해제
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected = false;
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ShapeContainer_Seleted.Visible = false;
- }
- this.pictureBox_Background.ResumeLayout();
- }
- // 픽쳐박스 마우스 다운
- private void pictureBox_Create_MouseDown(object sender, MouseEventArgs e)
- {
- // Work 패널 포커스 이동
- this.uiPanel_Work.Focus();
- // 선택한 픽쳐박스
- _PictureBoxItem PictureBoxItem = (_PictureBoxItem)sender;
- // 범위를 벗어나면 안됨
- Check_Icon_Location(PictureBoxItem);
- // 선택
- Selected_PictureBoxItem = null;
- // 상태갱신
- UI_Status_Write(PictureBoxItem);
- // 오브젝트 트리에 현재 선택된 아이콘 정보를 입력
- treeView_ObjectTree.SelectedNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, PictureBoxItem.Name);
- // 오브젝트 트리에 포커스 입력
- treeView_ObjectTree.Focus();
- // 선택
- Selected_PictureBoxItem = PictureBoxItem;
- // 오른쪽 마우스 버튼
- if (e.Button == System.Windows.Forms.MouseButtons.Right)
- {
- int Selected_Icon_Count = 0;
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- Selected_Icon_Count++;
- }
- if (Selected_Icon_Count > 1) // 1개이상 선택하는 경우
- {
- // 팝업 메세지 출력
- _Contextmenustrip.Create(PictureBoxItem, e.Location,
- _Text.IconLeftSort + ";" +
- _Text.IconRightSort + ";" +
- _Text.IconTopSort + ";" +
- _Text.IconBottomSort + ";" +
- _Text.ContextStripSeparator + ";" +
- _Text.IconSelDel,
- PictureBoxItem_Menustrip_ItemClicked);
- }
- else if (Selected_Icon_Count == 1)
- {
- // 팝업 메세지 출력
- _Contextmenustrip.Create(PictureBoxItem, e.Location,
- _Text.IconSelDel,
- PictureBoxItem_Menustrip_ItemClicked);
- }
- }
- // 왼쪽 마우스 버튼
- else
- {
- // 쉬프트키를 누르지 않았다면
- if (KeyDown_SHIFTKEY == false)
- {
- // 디바이스 아이콘 혹은 버튼 아이콘 선택 초기화
- pictureBox_SeletedStatusInitialize();
- }
- // 드래그 시작하면
- PictureBox_Drag_Shift = false;
- // 선택시 스타일 변경 (주변에 네모박스 보이도록 출력)
- Selected_PictureBoxItem.Selected = true;
- Selected_PictureBoxItem.ShapeContainer_Seleted.Visible = true;
- // 버튼이라면 점프페이지 선택가능함
- if (Selected_PictureBoxItem.ItemType == Item_Type.Button)
- {
- this.uiComboBox_Status_Jump.ReadOnly = false;
- this.uiComboBox_Status_Jump.BackColor = System.Drawing.Color.White;
- if (Selected_PictureBoxItem.Button_JumpPageName != null && Selected_PictureBoxItem.Button_JumpPageName.Length != 0)
- this.uiComboBox_Status_Jump.Text = Selected_PictureBoxItem.Button_JumpPageName;
- else
- this.uiComboBox_Status_Jump.Text = _Text.None;
- }
- else
- {
- this.uiComboBox_Status_Jump.ReadOnly = true;
- this.uiComboBox_Status_Jump.BackColor = System.Drawing.SystemColors.MenuBar;
- this.uiComboBox_Status_Jump.Text = _Text.None;
- }
- // 단 멀티선택의 경우 동시에 옮겨야 한다
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDrag_Status = true;
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDown_X = e.X;
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDown_Y = e.Y;
- }
- }
- // 키보드를 누른상태에서 마우스를 누르면 잔상이 남고 그건 나중에 원본이랑 대체가 된다
- if (KeyDown_ALTKEY == true)
- {
- // 아이콘 잠금 기능 활성화 체크
- if (this.uiCheckBox_IconLock.Checked == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.IconLockEnableCheck, 0);
- return;
- }
- // 복사 해쉬 및 리스트 초기화
- COPY_HASH_ICON.Clear();
- COPY_LIST_ICON_ID.Clear();
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- // 아이템 아이디
- string Item_ID = ICON_ID_Order++.ToString();
- // 파일경로, 아이디, 위치, 사이즈 지정
- _PictureBoxItem Copy_PictureBoxItem = UI_Create_PictureBoxItem(
- this.pictureBox_Background,
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType,
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).FullPath_FileName,
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).FileName,
- Item_ID,
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X,
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y);
- ///
- /// 동적 할당 변수 처리
- ///
- // 디바이스 연동 회로 번호
- Copy_PictureBoxItem.Device_Oper_ID = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID;
- // 점프 페이지
- PictureBoxItem.Button_JumpPageName = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Button_JumpPageName;
- if (Copy_PictureBoxItem != null)
- {
- // 복사 리스트에 일단 넣고
- if (_Hash.Add(COPY_HASH_ICON, Item_ID, Copy_PictureBoxItem) == true)
- {
- COPY_LIST_ICON_ID.Add(Item_ID);
- }
- }
- }
- }
- }
- }
- }
- // 픽쳐박스 마우스 업
- private void pictureBox_Create_MouseUp(object sender, MouseEventArgs e)
- {
- // 선택한 픽쳐박스
- _PictureBoxItem PictureBoxItem = (_PictureBoxItem)sender;
- // 범위를 벗어나면 안됨
- Check_Icon_Location(PictureBoxItem);
- // 마우스 드래그 상태 해제
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDrag_Status = false;
- }
- }
- // 드래그 종료하면
- PictureBox_Drag_Shift = false;
- // Alt 키를 누르는 경우 복사를 완료한다
- if (KeyDown_ALTKEY == true)
- {
- // 복사한 리스트를 토대로 해쉬테이블에 추가
- foreach (string COPY_ICON_ID in COPY_LIST_ICON_ID)
- {
- TEMP_LIST_ICON_ID.Add(COPY_ICON_ID);
- TEMP_HASH_ICON.Add(COPY_ICON_ID, COPY_HASH_ICON[COPY_ICON_ID]);
- // 오브젝트 트리에 추가
- if (((_PictureBoxItem)COPY_HASH_ICON[COPY_ICON_ID]).ItemType == Item_Type.Button)
- {
- // 버튼 타입
- _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 1, ((_PictureBoxItem)COPY_HASH_ICON[COPY_ICON_ID]).Name, ((_PictureBoxItem)COPY_HASH_ICON[COPY_ICON_ID]).NodeText(), Object_Type.BUTTON_DETAIL);
- }
- else
- {
- // 디바이스 타입
- _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 1, ((_PictureBoxItem)COPY_HASH_ICON[COPY_ICON_ID]).Name, ((_PictureBoxItem)COPY_HASH_ICON[COPY_ICON_ID]).NodeText(), Object_Type.DEVICE_DETAIL);
- }
- }
- // 완료한후 해쉬 및 리스트 초기화
- COPY_LIST_ICON_ID.Clear();
- COPY_HASH_ICON.Clear();
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- // 이동
- else
- {
- // 복사하려는 아이템이 있을경우에만 (즉 복사시도를 했을경우에만)
- if (COPY_LIST_ICON_ID.Count != 0)
- {
- // 원본위치에서 복사했던 리스트 삭제
- COPY_HASH_LIST_Initialize();
- }
- }
- }
- // 픽쳐박스 마우스 이동
- private void pictureBox_Create_MouseMove(object sender, MouseEventArgs e)
- {
- // 아이콘 잠금 기능 활성화 체크 (팝업창은 날리지 않는다)
- if (this.uiCheckBox_IconLock.Checked == true)
- return;
- // 선택한 픽쳐박스
- _PictureBoxItem PictureBoxItem = (_PictureBoxItem)sender;
- // 범위를 벗어나면 안됨
- Check_Icon_Location(PictureBoxItem);
- // 마우스 포인트 (픽쳐박스 내부 마우스 포인트)
- int PictureBox_MousePoint_X = e.X;
- int PictureBox_MousePoint_Y = e.Y;
- // 새로운 좌표
- PictureBox_New_MousePoint_X = PictureBox_MousePoint_X;
- // 쉬프트키를 누르면 수직 혹은 수평으로 이동할수 있다
- if (KeyDown_SHIFTKEY == true)
- {
- // 마우스를 떼기 전까지는 단한번의 결정으로 모드가 결정된다
- if (PictureBox_Drag_Shift == false)
- {
- // 드래그 중이다
- PictureBox_Drag_Shift = true;
- // 수평이동만 하는 경우에는 가장 최근의 좌표와 비교해서 X 좌표가 변경되었다면
- if (PictureBox_New_MousePoint_X != PictureBox_Old_MousePoint_X)
- {
- PictureBox_Drag_Vertical = false;
- }
- // 수직이동만 하는 경우에는 가장 최근의 좌표와 비교해서 Y 좌표가 변경되었다면
- else //if (New_PictureBoxItem_Y != Old_PictureBoxItem_Y)
- {
- PictureBox_Drag_Vertical = true;
- }
- }
- if (PictureBox_Drag_Vertical == false)
- {
- // 좌표 갱신 (1개만)
- if (PictureBoxItem.MouseDrag_Status == true)
- {
- // X 좌표만 갱신한다
- UI_Status_Write(
- PictureBoxItem.Location.X + PictureBox_MousePoint_X - PictureBoxItem.MouseDown_X,
- PictureBoxItem.Location.Y);
- }
- // 실제 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDrag_Status == true)
- {
- _PictureBoxItem PictureBoxItem_Selected = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]);
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location =
- new Point(
- PictureBoxItem_Selected.Location.X + PictureBox_MousePoint_X - PictureBoxItem_Selected.MouseDown_X,
- PictureBoxItem_Selected.Location.Y);
- }
- }
- }
- }
- else
- {
- // 좌표 갱신 (1개만)
- if (PictureBoxItem.MouseDrag_Status == true)
- {
- // Y좌표만 갱신한다
- UI_Status_Write(
- PictureBoxItem.Location.X,
- PictureBoxItem.Location.Y + PictureBox_MousePoint_Y - PictureBoxItem.MouseDown_Y);
- }
- // 실제 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDrag_Status == true)
- {
- _PictureBoxItem PictureBoxItem_Selected = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]);
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location =
- new Point(
- PictureBoxItem_Selected.Location.X,
- PictureBoxItem_Selected.Location.Y + PictureBox_MousePoint_Y - PictureBoxItem_Selected.MouseDown_Y);
- }
- }
- }
- }
- }
- else
- {
- // 좌표 갱신 (1개만)
- if (PictureBoxItem.MouseDrag_Status == true)
- {
- // 좌표만 갱신한다
- UI_Status_Write(
- PictureBoxItem.Location.X + PictureBox_MousePoint_X - PictureBoxItem.MouseDown_X,
- PictureBoxItem.Location.Y + PictureBox_MousePoint_Y - PictureBoxItem.MouseDown_Y);
- }
- // 실제 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).MouseDrag_Status == true)
- {
- _PictureBoxItem PictureBoxItem_Selected = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]);
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location =
- new Point(
- PictureBoxItem_Selected.Location.X + PictureBox_MousePoint_X - PictureBoxItem_Selected.MouseDown_X,
- PictureBoxItem_Selected.Location.Y + PictureBox_MousePoint_Y - PictureBoxItem_Selected.MouseDown_Y);
- }
- }
- }
- }
- // 마지막 좌표
- PictureBox_Old_MousePoint_X = PictureBox_MousePoint_X;
- }
- // 아이템클릭
- private void pictureBox_Create_MouseClick(object sender, MouseEventArgs e)
- {
- //// Work 패널 포커스 이동
- //this.uiPanel_Work.Focus();
- //// 선택한 픽쳐박스
- //_PictureBoxItem PictureBoxItem = (_PictureBoxItem)sender;
- //// 선택
- //Selected_PictureBoxItem = PictureBoxItem;
- //// 오른쪽 마우스 버튼
- //if (e.Button == System.Windows.Forms.MouseButtons.Right)
- //{
- // ; // Down 이벤트에서 처리
- //}
- //// 왼쪽 마우스 버튼
- //else
- //{
- // // 아이템 (디바이스 아이콘 혹은 버튼 아이콘 선택 초기화)
- // pictureBox_SeletedStatusInitialize();
- // // 선택시 스타일 변경 (주변에 네모박스 보이도록 출력)
- // Selected_PictureBoxItem.Selected = true;
- // Selected_PictureBoxItem.ShapeContainer_Seleted.Visible = true;
- // // 버튼이라면 점프페이지 선택가능함
- // if (Selected_PictureBoxItem.ItemType == Item_Type.Button)
- // {
- // this.uiComboBox_Status_Jump.ReadOnly = false;
- // this.uiComboBox_Status_Jump.BackColor = System.Drawing.Color.White;
- // if (Selected_PictureBoxItem.Button_JumpPageName != null && Selected_PictureBoxItem.Button_JumpPageName.Length != 0)
- // this.uiComboBox_Status_Jump.Text = Selected_PictureBoxItem.Button_JumpPageName;
- // else
- // this.uiComboBox_Status_Jump.Text = _Text.None;
- // }
- // else
- // {
- // this.uiComboBox_Status_Jump.ReadOnly = true;
- // this.uiComboBox_Status_Jump.BackColor = System.Drawing.SystemColors.MenuBar;
- // this.uiComboBox_Status_Jump.Text = _Text.None;
- // }
- //}
- }
- // 아이템 클릭후 오른쪽 마우스 팝업
- public void PictureBoxItem_Menustrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
- {
- // 호출한 것은 감추기
- ContextMenuStrip menustrip = (ContextMenuStrip)sender;
- // 잔상 삭제
- menustrip.Hide();
- // 위 정렬
- if (e.ClickedItem.Text == _Text.IconTopSort)
- {
- PictureBoxItem_TopSort();
- }
- // 아래 정렬
- else if (e.ClickedItem.Text == _Text.IconBottomSort)
- {
- PictureBoxItem_BottomSort();
- }
- // 아래 정렬
- else if (e.ClickedItem.Text == _Text.IconLeftSort)
- {
- PictureBoxItem_LeftSort();
- }
- // 아래 정렬
- else if (e.ClickedItem.Text == _Text.IconRightSort)
- {
- PictureBoxItem_RightSort();
- }
- // 선택된 아이콘 삭제
- else if (e.ClickedItem.Text == _Text.IconSelDel)
- {
- // 선택된 아이콘 삭제
- Common_IconSelDel();
- }
- }
- ///
- /// 상태창에서 사이즈 및 위치를 편집할수있다 (단, 입력후 반드시 엔터키를 눌러야 된다)
- ///
- private void editBox_Status_Location_X_KeyPress(object sender, KeyPressEventArgs e)
- {
- try
- {
- if (e.KeyChar.ToString() == _Text.Return)
- {
- if (Selected_PictureBoxItem != null &&
- editBox_Status_Location_X.Text.Length != 0 && editBox_Status_Location_Y.Text.Length != 0)
- {
- int x = Int32.Parse(editBox_Status_Location_X.Text);
- int y = Int32.Parse(editBox_Status_Location_Y.Text);
- if (x >= 0 && x <= 1080 && y >= 0 && y <= 720)
- Selected_PictureBoxItem.Location = new Point(x, y);
- }
- }
- }
- catch
- {
- ; // 잘못된 입력입니다
- }
- }
- private void editBox_Status_Location_Y_KeyPress(object sender, KeyPressEventArgs e)
- {
- try
- {
- if (e.KeyChar.ToString() == _Text.Return)
- {
- if (Selected_PictureBoxItem != null &&
- editBox_Status_Location_X.Text.Length != 0 && editBox_Status_Location_Y.Text.Length != 0)
- {
- int x = Int32.Parse(editBox_Status_Location_X.Text);
- int y = Int32.Parse(editBox_Status_Location_Y.Text);
- if (x >= 0 && x <= 1080 && y >= 0 && y <= 720)
- Selected_PictureBoxItem.Location = new Point(x, y);
- }
- }
- }
- catch
- {
- ; // 잘못된 입력입니다
- }
- }
- private void editBox_Status_Size_W_KeyPress(object sender, KeyPressEventArgs e)
- {
- try
- {
- if (e.KeyChar.ToString() == _Text.Return)
- {
- if (Selected_PictureBoxItem != null &&
- editBox_Status_Size_W.Text.Length != 0 && editBox_Status_Size_H.Text.Length != 0)
- {
- int w = Int32.Parse(editBox_Status_Size_W.Text);
- int h = Int32.Parse(editBox_Status_Size_H.Text);
- if (w > 0 && w <= 1080 && h > 0 && h <= 720)
- Selected_PictureBoxItem.Size = new Size(w, h);
- }
- }
- }
- catch
- {
- ; // 잘못된 입력입니다
- }
- }
- private void editBox_Status_Size_H_KeyPress(object sender, KeyPressEventArgs e)
- {
- try
- {
- if (e.KeyChar.ToString() == _Text.Return)
- {
- if (Selected_PictureBoxItem != null &&
- editBox_Status_Size_W.Text.Length != 0 && editBox_Status_Size_H.Text.Length != 0)
- {
- int w = Int32.Parse(editBox_Status_Size_W.Text);
- int h = Int32.Parse(editBox_Status_Size_H.Text);
- if (w > 0 && w <= 1080 && h > 0 && h <= 720)
- Selected_PictureBoxItem.Size = new Size(w, h);
- }
- }
- }
- catch
- {
- ; // 잘못된 입력입니다
- }
- }
- ///
- /// 상태창 추가 이벤트
- ///
- // 점프페이지 콤보박스 아이템 추가
- private void uiComboBox_Status_Jump_DroppingDown(object sender, CancelEventArgs e)
- {
- // 콤보박스에 추가할 리스트
- ArrayList TempComboBoxPageName = new ArrayList();
- foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).LIST_PAGE_ID)
- {
- _RECEIVER RECEIVER = ((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]);
- // 페이지 명을 추가한다
- TempComboBoxPageName.Add(((_Page)RECEIVER.HASH_PAGE[PAGE_ID]).NodeText);
- }
- // 선택한 점프페이지
- if (Selected_PictureBoxItem != null && this.uiComboBox_Status_Jump.Text.Length != 0 && this.uiComboBox_Status_Jump.Text != null)
- {
- // 콤보박스 셋팅
- _Combobox.Initialize(this.uiComboBox_Status_Jump, TempComboBoxPageName, Selected_PictureBoxItem.Button_JumpPageName);
- // None 값도 추가
- if (this.uiComboBox_Status_Jump.Items.Contains(_Text.None) == false)
- this.uiComboBox_Status_Jump.Items.Add(_Text.None);
- }
- }
- // 점프페이지 설정
- private void uiComboBox_Status_Jump_SelectedItemChanged(object sender, EventArgs e)
- {
- if (Selected_PictureBoxItem != null && this.uiComboBox_Status_Jump.Text.Length != 0 && this.uiComboBox_Status_Jump.Text != null)
- {
- if (Selected_PictureBoxItem.ItemType == Item_Type.Button)
- {
- //
- // 아이템에 점프 페이지 적용
- //
- ((_PictureBoxItem)TEMP_HASH_ICON[Selected_PictureBoxItem.Name]).Button_JumpPageName = this.uiComboBox_Status_Jump.Text;
- // 편집할 노드 검색
- TreeNode EditNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[Selected_PictureBoxItem.Name]).Name);
- // 트리에 반영
- EditNode.Text = ((_PictureBoxItem)TEMP_HASH_ICON[Selected_PictureBoxItem.Name]).NodeText();
- // 오브젝트 트리 색상 반영 (버튼)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[Selected_PictureBoxItem.Name]).Name, ((_PictureBoxItem)TEMP_HASH_ICON[Selected_PictureBoxItem.Name]).Button_JumpPageName);
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- }
- }
- ///
- /// 공통으로 사용되는 선 (배경에서 드래그를 하여 생성되는 네모 혹은 아이템(디바이스 아이콘 혹은 버튼 아이콘을 선택하여 생성되는 네모)
- ///
- // 선 스타일
- private void LineShape_BorderStyle(LineShape lineshape, DashStyle dashstyle, Color color, int borderwidth)
- {
- try
- {
- lineshape.BorderStyle = dashstyle;
- lineshape.BorderColor = color;
- lineshape.BorderWidth = borderwidth;
- }
- catch
- {
- }
- }
- // 선 시작점
- private void LineShape_Start(LineShape lineshape, int x, int y)
- {
- try
- {
- lineshape.X1 = x;
- lineshape.Y1 = y;
- }
- catch
- {
- }
- }
- // 선 끝점
- private void LineShape_End(LineShape lineshape, int x, int y)
- {
- try
- {
- lineshape.X2 = x;
- lineshape.Y2 = y;
- }
- catch
- {
- }
- }
- // 배경에 올라온 이미지의 선 스타일 일괄 변경
- private void LineShape_Item_BorderStyle(_PictureBoxItem PictureBoxItem, DashStyle dashstyle, Color color, int borderwidth)
- {
- LineShape_BorderStyle(PictureBoxItem.LineShape_TOP, dashstyle, color, borderwidth);
- LineShape_BorderStyle(PictureBoxItem.LineShape_BOTTOM, dashstyle, color, borderwidth);
- LineShape_BorderStyle(PictureBoxItem.LineShape_LEFT, dashstyle, color, borderwidth);
- LineShape_BorderStyle(PictureBoxItem.LineShape_RIGHT, dashstyle, color, borderwidth);
- }
- // 배경에서 마우스로 드래그하는 경우 생성되는 선 스타일 일괄변경
- private void LineShape_MouseDragBackGrond_BorderStyle(DashStyle dashstyle, Color color, int borderwidth)
- {
- LineShape_BorderStyle(LineShape_MouseDragBackGround_TOP, dashstyle, color, borderwidth);
- LineShape_BorderStyle(LineShape_MouseDragBackGround_BOTTOM, dashstyle, color, borderwidth);
- LineShape_BorderStyle(LineShape_MouseDragBackGround_LEFT, dashstyle, color, borderwidth);
- LineShape_BorderStyle(LineShape_MouseDragBackGround_RIGHT, dashstyle, color, borderwidth);
- }
- // 배경에서 마우스로 드래그하는 경우 생성되는 선 모두 삭제
- private void LineShape_MouseDragBackGrond_Clear()
- {
- if (ShapeContainer_MouseDragBackGround != null) ShapeContainer_MouseDragBackGround.Dispose();
- if (LineShape_MouseDragBackGround_TOP != null) LineShape_MouseDragBackGround_TOP.Dispose();
- if (LineShape_MouseDragBackGround_BOTTOM != null) LineShape_MouseDragBackGround_BOTTOM.Dispose();
- if (LineShape_MouseDragBackGround_LEFT != null) LineShape_MouseDragBackGround_LEFT.Dispose();
- if (LineShape_MouseDragBackGround_RIGHT != null) LineShape_MouseDragBackGround_RIGHT.Dispose();
- }
- ///
- /// 배경
- ///
- // 배경 클릭 (마우스 클릭)
- private void pictureBox_Background_MouseClick(object sender, MouseEventArgs e)
- {
- //// 선택
- //Selected_PictureBoxItem = null;
- //// 상태갱신
- //UI_Status_Initialize(Item_Type.BackGround, this.editBox_Base_BackgrondFilePath.Text);
- //// 나머지 선택 스타일 초기화
- //pictureBox_SeletedStatusInitialize();
- //// 오른쪽 마우스
- //if (e.Button == System.Windows.Forms.MouseButtons.Right)
- //{
- // _Contextmenustrip.Create(this.pictureBox_Background, e.Location,
- // _Text.ButtonAdd + ";" +
- // _Text.ItemAllDel,
- // pictureBox_Background_Menustrip_ItemClicked);
- //}
- //// 왼쪽 마우스
- //else
- //{
- // // 배경 선을 모두 클리어
- // LineShape_MouseDragBackGrond_Clear();
- // MouseDrag = false;
- //}
- }
- // 배경클릭후 팝업창에서 선택
- public void pictureBox_Background_Menustrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
- {
- // 호출한 것은 감추기
- ContextMenuStrip menustrip = (ContextMenuStrip)sender;
- // 잔상 삭제
- menustrip.Hide();
- // 버튼 추가
- if (e.ClickedItem.Text == _Text.ButtonAdd)
- {
- OpenFileDialog openFileDialog = new OpenFileDialog();
- // 배경 삽입시에 다이얼로그창은 프로젝트 경로에 따라서 Field 폴더에 곧바로 접근할 수있도록 함
- openFileDialog.InitialDirectory = Default_Field_FullPath;
- if (openFileDialog.ShowDialog() == DialogResult.OK)
- {
- // 아이템 아이디
- string Item_ID = ICON_ID_Order++.ToString();
- // 파일경로, 아이디, 위치, 사이즈 지정
- _PictureBoxItem PictureBoxItem = UI_Create_PictureBoxItem(
- this.pictureBox_Background,
- Item_Type.Button,
- openFileDialog.FileName, //Default_Field_FullPath + "\\" + openFileDialog.SafeFileName,
- openFileDialog.SafeFileName,//ListViewItem.FocusedItem.Text,
- Item_ID,
- 0, 0);
- // 사이즈 제한
- if (PictureBoxItem == null)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 450, 150, _Text.SizeLimitOrEtcError, 0);
- return;
- }
- // 아이콘 리스트 와 해쉬에 추가
- if (_Hash.Add(TEMP_HASH_ICON, Item_ID, PictureBoxItem) == true)
- {
- TEMP_LIST_ICON_ID.Add(Item_ID);
- }
- // 상태창 초기화
- UI_Status_Initialize(Item_Type.Button, openFileDialog.FileName);
- // 오브젝트 트리에 추가 - 버튼
- _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 0, Item_ID, PictureBoxItem.NodeText(), Object_Type.BUTTON_DETAIL);
- this.treeView_ObjectTree.ExpandAll();
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- }
- // 전체 삭제
- else if (e.ClickedItem.Text == _Text.IconAllDel)
- {
- // 버튼 및 디바이스 아이콘 전체 삭제
- Common_IconAllDel();
- }
- }
- // 배경에서 마우스 버튼 누르는 동시에 드래그 시작
- private void pictureBox_Background_MouseDown(object sender, MouseEventArgs e)
- {
- // Work 패널 포커스 이동
- this.uiPanel_Work.Focus();
- // 선택
- Selected_PictureBoxItem = null;
- // 상태갱신
- UI_Status_Initialize(Item_Type.BackGround, this.editBox_Base_BackgrondFilePath.Text);
- // 나머지 선택 스타일 초기화
- pictureBox_SeletedStatusInitialize();
- // 오른쪽 마우스
- if (e.Button == System.Windows.Forms.MouseButtons.Right)
- {
- _Contextmenustrip.Create(this.pictureBox_Background, e.Location,
- _Text.ButtonAdd + ";" +
- _Text.ContextStripSeparator + ";" +
- _Text.IconAllDel,
- pictureBox_Background_Menustrip_ItemClicked);
- }
- // 왼쪽 마우스
- else
- {
- // 배경 선을 모두 클리어
- LineShape_MouseDragBackGrond_Clear();
- //MouseDrag = false;
- // 드래그 시작
- BackGround_MouseDrag = true;
- // 클릭좌표
- BackGround_MouseDrag_Before_X = e.X;
- BackGround_MouseDrag_Before_Y = e.Y;
- // 메모리 해제
- LineShape_MouseDragBackGrond_Clear();
- // 메모리 할당
- ShapeContainer_MouseDragBackGround = new ShapeContainer();
- LineShape_MouseDragBackGround_TOP = new LineShape();
- LineShape_MouseDragBackGround_BOTTOM = new LineShape();
- LineShape_MouseDragBackGround_LEFT = new LineShape();
- LineShape_MouseDragBackGround_RIGHT = new LineShape();
- // 선 스타일 지정
- LineShape_MouseDragBackGrond_BorderStyle(Selected_DashStyle_First, Selected_Color, Selected_BorderWidth_BakcGround);
- }
- }
- // 범위안에 아이콘이 포함되는지 체크함 (선으로 구성한 덕분에 계산이 복잡해졌음)..
- private bool pictureBox_Background_MouseUp_InCheck(string ICON_ID)
- {
- // 왼쪽 상단 -> 오른쪽 하단 드래그시
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X >= BackGround_MouseDrag_Before_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y >= BackGround_MouseDrag_Before_Y
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Width <= BackGround_MouseDrag_After_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Height <= BackGround_MouseDrag_After_Y)
- {
- return true;
- }
- // 왼쪽 하단 -> 오른쪽 상단 드래그시
- else if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X >= BackGround_MouseDrag_Before_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y >= BackGround_MouseDrag_After_Y
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Width <= BackGround_MouseDrag_After_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Height <= BackGround_MouseDrag_Before_Y)
- {
- return true;
- }
- // 오른쪽 상단 -> 왼쪽 하단 드래그시
- else if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X >= BackGround_MouseDrag_After_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y >= BackGround_MouseDrag_Before_Y
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Width <= BackGround_MouseDrag_Before_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Height <= BackGround_MouseDrag_After_Y)
- {
- return true;
- }
- // 오른쪽 하단 -> 왼쪽 상단 드래그시
- else if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X >= BackGround_MouseDrag_After_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y >= BackGround_MouseDrag_After_Y
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Width <= BackGround_MouseDrag_Before_X
- && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Size.Height <= BackGround_MouseDrag_Before_Y)
- {
- return true;
- }
- return false;
- }
- // 배경에서 마우스 버튼 누르는 동시에 드래그 종료
- private void pictureBox_Background_MouseUp(object sender, MouseEventArgs e)
- {
- // Work 패널 포커스 이동
- this.uiPanel_Work.Focus();
- // 드래그 해제
- BackGround_MouseDrag = false;
- // 드래그 영역안에 아이템이 포함되면 선택한 아이템 모두 선택 표시
- // 범위안의 디바이스 아이콘 및 버튼 아이콘 검색
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (pictureBox_Background_MouseUp_InCheck(ICON_ID) == true)
- {
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected = true;
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ShapeContainer_Seleted.Visible = true;
- }
- }
- // 배경 선을 모두 클리어
- LineShape_MouseDragBackGrond_Clear();
- }
- // 배경에서 마우스로 드래그하는 동안 선이 생성
- private void pictureBox_Background_MouseMove(object sender, MouseEventArgs e)
- {
- // 배경 드래그 상태
- if (BackGround_MouseDrag == true)
- {
- // 클릭좌표
- BackGround_MouseDrag_After_X = e.X;
- BackGround_MouseDrag_After_Y = e.Y;
- // TOP
- LineShape_Start(LineShape_MouseDragBackGround_TOP, BackGround_MouseDrag_Before_X, BackGround_MouseDrag_Before_Y);
- LineShape_End(LineShape_MouseDragBackGround_TOP, BackGround_MouseDrag_After_X, BackGround_MouseDrag_Before_Y);
- // LEFT
- LineShape_Start(LineShape_MouseDragBackGround_LEFT, BackGround_MouseDrag_Before_X, BackGround_MouseDrag_Before_Y);
- LineShape_End(LineShape_MouseDragBackGround_LEFT, BackGround_MouseDrag_Before_X, BackGround_MouseDrag_After_Y);
- // RIGHT
- LineShape_Start(LineShape_MouseDragBackGround_RIGHT, BackGround_MouseDrag_After_X, BackGround_MouseDrag_Before_Y);
- LineShape_End(LineShape_MouseDragBackGround_RIGHT, BackGround_MouseDrag_After_X, BackGround_MouseDrag_After_Y);
- // BOTTM
- LineShape_Start(LineShape_MouseDragBackGround_BOTTOM, BackGround_MouseDrag_Before_X, BackGround_MouseDrag_After_Y);
- LineShape_End(LineShape_MouseDragBackGround_BOTTOM, BackGround_MouseDrag_After_X, BackGround_MouseDrag_After_Y);
- // 컨테이너에 상위 4개 선 포함
- ShapeContainer_MouseDragBackGround.Shapes.AddRange(new Microsoft.VisualBasic.PowerPacks.Shape[]
- {
- LineShape_MouseDragBackGround_TOP,LineShape_MouseDragBackGround_BOTTOM,LineShape_MouseDragBackGround_LEFT,LineShape_MouseDragBackGround_RIGHT,
- });
- // 배경그림에 컨테이너 포함
- this.pictureBox_Background.Controls.Add(ShapeContainer_MouseDragBackGround);
- }
- }
- ///
- /// 아이콘 관련 공통 루틴
- ///
- // 아이콘 전체 삭제
- private void Common_IconAllDel()
- {
- // 해쉬 및 리스트 전체 삭제
- TEMP_HASH_LIST_Initialize();
- // 상태바 초기화
- UI_Status_Clear();
- // 오브젝트 트리 초기화
- UI_Tree_Initialize();
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- // 디바이스 조회창 초기화
- UI_Device_Initialize();
- }
- // 선택된 아이콘 삭제
- private void Common_IconSelDel()
- {
- // 삭제하려는 키리스트 임시로 만듬
- ArrayList RemoveKeyLIst = new ArrayList();
- // 삭제는 선택한 모두 삭제 가능하도록 삭제할 키리스트를 생성
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- // 선택한 아이콘은 삭제
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Dispose();
- // 트리에 반영
- _Tree.DelNodeName_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 삭제할 키리스트에 할당 , 중복은 배제하도록 함
- if (RemoveKeyLIst.Contains(ICON_ID) == false)
- RemoveKeyLIst.Add(ICON_ID);
- }
- }
- // 삭제할 키리스트에 의해 해쉬와 리스트를 삭제
- _Hash.DelData_ByKey(TEMP_HASH_ICON, RemoveKeyLIst);
- _LIst.Del_ByKeyList(TEMP_LIST_ICON_ID, RemoveKeyLIst);
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- // 디바이스 조회창 색상 반영 초기화 (순서는 절대 바꾸지 마십시오)
- GridexDevice_ChangeColor_By_TEMP();
- GridexDevice_ChangeColor_By_HASH();
- }
- // 선택된 버튼 아이콘 연동 초기화
- private void Common_ButtonJumpClear()
- {
- // 삭제는 선택한 모두 삭제 가능하도록 삭제할 키리스트를 생성
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Button)
- {
- //
- // 점프 페이지 초기화
- //
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Button_JumpPageName = null;
- // 트리 검색
- TreeNode EditNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 트리에 반영
- EditNode.Text = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).NodeText();
- // 오브젝트 트리 색상 반영 (버튼)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Button_JumpPageName);
- }
- }
- }
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- // 선택된 디바이스 아이콘 연동 초기화
- private void Common_DeviceLinkClear()
- {
- // 삭제는 선택한 모두 삭제 가능하도록 삭제할 키리스트를 생성
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
- {
- // 초기화
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID = null;
- // 트리 검색
- TreeNode EditNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 트리에 반영
- EditNode.Text = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).NodeText();
- // 오브젝트 트리 색상 반영 (디바이스)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID);
- }
- }
- }
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- // 디바이스 조회창 색상 반영 초기화 (순서는 절대 바꾸지 마십시오)
- GridexDevice_ChangeColor_By_TEMP();
- GridexDevice_ChangeColor_By_HASH();
- }
- // 버튼 아이콘 전체 삭제
- private void Common_ButtonAllDel()
- {
- // 삭제하려는 키리스트 임시로 만듬
- ArrayList RemoveKeyLIst = new ArrayList();
- // 삭제는 선택한 모두 삭제 가능하도록 삭제할 키리스트를 생성
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Button)
- {
- // 선택한 아이콘은 삭제
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Dispose();
- // 트리에 반영
- _Tree.DelNodeName_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 삭제할 키리스트에 할당 , 중복은 배제하도록 함
- if (RemoveKeyLIst.Contains(ICON_ID) == false)
- RemoveKeyLIst.Add(ICON_ID);
- }
- }
- // 삭제할 키리스트에 의해 해쉬와 리스트를 삭제
- _Hash.DelData_ByKey(TEMP_HASH_ICON, RemoveKeyLIst);
- _LIst.Del_ByKeyList(TEMP_LIST_ICON_ID, RemoveKeyLIst);
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- // 버튼 아이콘 점프페이지 전체초기화
- private void Common_ButtonJumpAllClear()
- {
- // 버튼 아이콘 전부 검색
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Button)
- {
- // 점프 페이지 초기화
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Button_JumpPageName = null;
- // 트리 검색
- TreeNode EditNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 트리에 반영
- EditNode.Text = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).NodeText();
- // 오브젝트 트리 색상 반영 (버튼)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Button_JumpPageName);
- }
- }
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- }
- // 디바이스 아이콘 전체 삭제
- private void Common_DeviceAllDel()
- {
- // 삭제하려는 키리스트 임시로 만듬
- ArrayList RemoveKeyLIst = new ArrayList();
- // 삭제는 선택한 모두 삭제 가능하도록 삭제할 키리스트를 생성
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
- {
- // 선택한 아이콘은 삭제
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Dispose();
- // 트리에 반영
- _Tree.DelNodeName_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 삭제할 키리스트에 할당 , 중복은 배제하도록 함
- if (RemoveKeyLIst.Contains(ICON_ID) == false)
- RemoveKeyLIst.Add(ICON_ID);
- }
- }
- // 삭제할 키리스트에 의해 해쉬와 리스트를 삭제
- _Hash.DelData_ByKey(TEMP_HASH_ICON, RemoveKeyLIst);
- _LIst.Del_ByKeyList(TEMP_LIST_ICON_ID, RemoveKeyLIst);
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- // 디바이스 조회창 색상 반영 초기화 (순서는 절대 바꾸지 마십시오)
- GridexDevice_ChangeColor_By_TEMP();
- GridexDevice_ChangeColor_By_HASH();
- }
- // 디바이스 아이콘 연동 전체초기화
- private void Common_DeviceLinkAllClear()
- {
- // 디바이스 아이콘 전부 검색
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
- {
- // 점프 페이지 초기화
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID = null;
- // 트리 검색
- TreeNode EditNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- // 트리에 반영
- EditNode.Text = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).NodeText();
- // 오브젝트 트리 색상 반영 (디바이스)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID);
- }
- }
- // 상태바 초기화
- UI_Status_Clear();
- // 선택된 픽쳐박스 초기화
- Selected_PictureBoxItem = null;
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- // 디바이스 조회창 색상 반영 초기화 (순서는 절대 바꾸지 마십시오)
- GridexDevice_ChangeColor_By_TEMP();
- GridexDevice_ChangeColor_By_HASH();
- }
- ///
- /// 맵디자이너 공통 타이머
- ///
- // 사용용도는 크게 2가지이다.
- // 1. 배경에서 드래그하는 경우 스타일이 토글되면서 변경
- // 2. 아이템 (디바이스 아이콘, 버튼 아이콘) 을 선택하는 경우 스타일이 초단위로 토글되면서 변경
- private void timer_MapDesignerConfig_Tick(object sender, EventArgs e)
- {
- MapDesigner_Count++;
- // 스타일 지정 (초단위로)
- if (MapDesigner_Count % 2 == 0)
- {
- // 배경에서 드래그한 네모 스타일 변경 옵션 1
- LineShape_MouseDragBackGrond_BorderStyle(Selected_DashStyle_First, Selected_Color, Selected_BorderWidth_BakcGround);
- // 선택한 아이콘 스타일 변경 옵션 1
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- LineShape_Item_BorderStyle(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]), Selected_DashStyle_First, Selected_Color, Selected_BorderWidth_Item);
- }
- }
- // 홀짝 순으로 토글하기 위한 초기화
- MapDesigner_Count = 0;
- }
- else
- {
- // 배경에서 드래그한 네모 스타일 변경 옵션 2
- LineShape_MouseDragBackGrond_BorderStyle(Selected_DashStyle_Second, Selected_Color, Selected_BorderWidth_BakcGround);
- // 선택한 아이콘 스타일 변경 옵션 2
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ShapeContainer_Seleted.Visible = true;
- LineShape_Item_BorderStyle(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]), Selected_DashStyle_Second, Selected_Color, Selected_BorderWidth_Item);
- }
- }
- }
- }
- ///
- /// 키보드 이벤트
- ///
- private void Form_MapDesigner_KeyUp(object sender, KeyEventArgs e)
- {
- KeyDown_ALTKEY = e.Alt;
- KeyDown_SHIFTKEY = e.Shift;
- }
- private void Form_MapDesigner_KeyDown(object sender, KeyEventArgs e)
- {
- // 복사 : Alt 키를 누르면 마우스 드래그하면서 아이템을 복사 할수 있다
- KeyDown_ALTKEY = e.Alt;
- // 반드시 워크 작업 뷰에 포커스가 있을 경우에만
- if (this.uiPanel_Work.Focused == true || this.uiPanel_WorkContainer.Focused == true)
- {
- switch (e.KeyCode)
- {
- // 삭제 : 현재 1개만 삭제 가능하다 (선택되어 있는 아이템 전부 삭제 루틴은 차후 개발 -> 현재 배경에서 오른쪽 마우스 버튼으로 전체 삭제로 일단 대체함)
- case Keys.Delete:
- {
- // 선택된 아이콘 삭제
- Common_IconSelDel();
- }
- break;
- case Keys.W:
- case Keys.NumPad8:
- case Keys.S:
- case Keys.NumPad2:
- case Keys.A:
- case Keys.NumPad4:
- case Keys.D:
- case Keys.NumPad6:
- {
- uiPanel_WorkContainer_KeyDown_UpDownLeftRight(e.KeyCode);
- }
- break;
- default:
- break;
- }
- }
- // 일반적인 상황에서 핫키가 필요한 경우
- switch (e.KeyCode)
- {
- // Operation : 디바이스 연동 루틴이 너무 많아서 단축키가 필요하다 O 를 2번 누르도록 유도하자
- case Keys.O:
- // 디바이스창에서 선택한 아이템이 1개이며, 워크뷰에서도 선택한 아이템이 1개인지
- if (uiButton_Device_Apply_Verify() != null)
- {
- uiButton_Device_Apply_Click(this.uiButton_Device_Apply, EventArgs.Empty);
- }
- break;
- }
- }
- private void uiPanel_WorkContainer_KeyDown_UpDownLeftRight(Keys KeyCode)
- {
- // 아이콘 잠금 기능 활성화 체크
- if (this.uiCheckBox_IconLock.Checked == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.IconLockEnableCheck, 0);
- return;
- }
- _PictureBoxItem PictureBoxItem = null;
- int Selected_Icon_Count = 0;
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- // 선택된 아이콘이라면 카운트
- Selected_Icon_Count++;
- // 선택된 아이콘 위치 조절
- PictureBoxItem = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]);
- switch (KeyCode)
- {
- case Keys.W:
- case Keys.NumPad8:
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(PictureBoxItem.Location.X, PictureBoxItem.Location.Y - 1);
- break;
- case Keys.S:
- case Keys.NumPad2:
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(PictureBoxItem.Location.X, PictureBoxItem.Location.Y + 1);
- break;
- case Keys.A:
- case Keys.NumPad4:
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(PictureBoxItem.Location.X - 1, PictureBoxItem.Location.Y);
- break;
- case Keys.D:
- case Keys.NumPad6:
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(PictureBoxItem.Location.X + 1, PictureBoxItem.Location.Y);
- break;
- }
- }
- }
- // 단순히 1개만 선택했을 경우에만 바로 상태바에 표시된다
- if (Selected_Icon_Count == 1)
- {
- // 좌표만 갱신한다
- switch (KeyCode)
- {
- case Keys.W:
- case Keys.NumPad8:
- UI_Status_Write(PictureBoxItem.Location.X, PictureBoxItem.Location.Y - 1);
- break;
- case Keys.S:
- case Keys.NumPad2:
- UI_Status_Write(PictureBoxItem.Location.X, PictureBoxItem.Location.Y + 1);
- break;
- case Keys.A:
- case Keys.NumPad4:
- UI_Status_Write(PictureBoxItem.Location.X - 1, PictureBoxItem.Location.Y);
- break;
- case Keys.D:
- case Keys.NumPad6:
- UI_Status_Write(PictureBoxItem.Location.X + 1, PictureBoxItem.Location.Y);
- break;
- }
- }
- this.pictureBox_Background.ResumeLayout();
- }
- ///
- /// 정렬
- ///
- // 왼쪽 정렬
- private void PictureBoxItem_LeftSort()
- {
- // 아이콘 잠금 기능 활성화 체크
- if (this.uiCheckBox_IconLock.Checked == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.IconLockEnableCheck, 0);
- return;
- }
- // 1. 제일 왼쪽에 있는 아이콘이 기준
- // 2. 나머지 아이콘은 X 좌표만 정렬 , Y 좌표 고정됨
- // 기준 X 좌표
- int Criteria_X = this.pictureBox_Background.Width;
- // 제일 왼쪽에 있는 아이콘
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X <= Criteria_X)
- Criteria_X = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X;
- // 선택된 아이콘 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(Criteria_X, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y);
- }
- // 오른쪽 정렬
- private void PictureBoxItem_RightSort()
- {
- // 아이콘 잠금 기능 활성화 체크
- if (this.uiCheckBox_IconLock.Checked == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.IconLockEnableCheck, 0);
- return;
- }
- // 1. 제일 오른쪽에 있는 아이콘이 기준
- // 2. 나머지 아이콘은 X 좌표만 정렬 , Y 좌표 고정됨
- // 기준 X 좌표
- int Criteria_X = 0;
- // 제일 오른쪽에 있는 아이콘
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X >= Criteria_X)
- Criteria_X = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X;
- // 선택된 아이콘 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(Criteria_X, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y);
- }
- // 위 정렬
- private void PictureBoxItem_TopSort()
- {
- // 아이콘 잠금 기능 활성화 체크
- if (this.uiCheckBox_IconLock.Checked == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.IconLockEnableCheck, 0);
- return;
- }
- // 1. 제일 위쪽에 있는 아이콘이 기준
- // 2. 나머지 아이콘은 Y 좌표만 정렬 , X 좌표 고정됨
- // 기준 Y 좌표
- int Criteria_Y = this.pictureBox_Background.Height;
- // 제일 위쪽에 있는 아이콘
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y <= Criteria_Y)
- Criteria_Y = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y;
- // 선택된 아이콘 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X, Criteria_Y);
- }
- // 아래 정렬
- private void PictureBoxItem_BottomSort()
- {
- // 아이콘 잠금 기능 활성화 체크
- if (this.uiCheckBox_IconLock.Checked == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.IconLockEnableCheck, 0);
- return;
- }
- // 1. 제일 아래쪽에 있는 아이콘이 기준
- // 2. 나머지 아이콘은 Y 좌표만 정렬 , X 좌표 고정됨
- // 기준 Y 좌표
- int Criteria_Y = 0;
- // 제일 위쪽에 있는 아이콘
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y >= Criteria_Y)
- Criteria_Y = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y;
- // 선택된 아이콘 위치 변경
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X, Criteria_Y);
- }
- //private void PictureBoxItem_HorizontalSort()
- //{
- // ///
- // /// 왼쪽 정렬
- // /// 1. 제일 왼쪽에 있는 아이콘이 기준
- // /// 2. 나머지 아이콘은 X 좌표만 정렬 , Y 좌표 고정됨
- // ///
- // // 최소값
- // int Min_Value = 0;
- // // 최대값
- // int Max_Value = 0;
- // // 간격
- // int Margin = 0;
- // // 기준 Y 좌표
- // int Criteria_Y = 0;
- // // 선택된 아이콘 리스트
- // ArrayList Order = new ArrayList();
- // // 선택된 아이콘이 1개 이상인 경우에 적용됨
- // if (TEMP_LIST_ICON_ID.Count > 1)
- // {
- // // 제일 오른쪽에 있는 아이콘
- // foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- // {
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- // {
- // // 최대값 구하기
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X >= Max_Value)
- // {
- // Max_Value = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X;
- // }
- // // 선택 되어있는 리스트
- // Order.Add(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X);
- // }
- // }
- // // 아이콘 위치에 의해 정렬 (오름차순)
- // Order.Sort();
- // // 최소값을 최대값으로 치환
- // Min_Value = Max_Value;
- // // 제일 왼쪽에 있는 아이콘
- // foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- // {
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- // {
- // // 최소값 구하기
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X <= Min_Value)
- // {
- // // X 기준 좌표
- // Min_Value = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X;
- // // Y 기준 좌표
- // Criteria_Y = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y;
- // }
- // }
- // }
- // // 제일 왼쪽에 있는 아이콘을 기준으로 정렬하되 아래와 같이 간격을 지정한다
- // // 간격 = (최대값 - 최소값 사이즈) / (총개수 - 1)
- // Margin = (Max_Value - Min_Value) / (TEMP_LIST_ICON_ID.Count-1);
- // // 단, 디바이스 아이콘의 사이즈는 초과하도록 한다 (마진값이 1이상 나지 않다면 의미가 없다)
- // if (Margin < 24) Margin = 25;
- // // 오름차순으로 정렬된 리스트를 기준으로 차례대로 간격을 계산해서 정렬한다
- // for (int j = 0; j<Order.Count; j++)
- // {
- // foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- // {
- // // Order 의 X 값과 일치하는 것만 찾아서
- // if (Int32.Parse(Order[j].ToString()) == ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X)
- // {
- // // X 좌표 : 기준점(최소값) + 마진
- // // Y 좌표 : 기준점(최소값)
- // ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(Min_Value+(j * Margin), Criteria_Y);
- // break;
- // }
- // }
- // }
- // }
- //}
- //private void PictureBoxItem_VerticalSort()
- //{
- // ///
- // /// 평균값 세로 정렬
- // ///
- // // 최소값
- // int Min_Value = 0;
- // // 최대값
- // int Max_Value = 0;
- // // 간격
- // int Margin = 0;
- // // 기준 X 좌표
- // int Criteria_X = 0;
- // // 선택된 아이콘 리스트
- // ArrayList Order = new ArrayList();
- // // 선택된 아이콘이 1개 이상인 경우에 적용됨
- // if (TEMP_LIST_ICON_ID.Count > 1)
- // {
- // // 제일 위쪽에 있는 아이콘
- // foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- // {
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- // {
- // // 최대값 구하기
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y >= Max_Value)
- // {
- // Max_Value = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y;
- // }
- // // 선택 되어있는 리스트
- // Order.Add(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y);
- // }
- // }
- // // 아이콘 위치에 의해 정렬 (오름차순)
- // Order.Sort();
- // // 최소값을 최대값으로 치환
- // Min_Value = Max_Value;
- // // 제일 아래쪽에 있는 아이콘
- // foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- // {
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- // {
- // // 최소값 구하기
- // if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y <= Min_Value)
- // {
- // // Y 기준 좌표
- // Min_Value = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y;
- // // X 기준 좌표
- // Criteria_X = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.X;
- // }
- // }
- // }
- // // 제일 왼쪽에 있는 아이콘을 기준으로 정렬하되 아래와 같이 간격을 지정한다
- // // 간격 = (최대값 - 최소값 사이즈) / (총개수 - 1)
- // Margin = (Max_Value - Min_Value) / (TEMP_LIST_ICON_ID.Count - 1);
- // // 단, 디바이스 아이콘의 사이즈는 초과하도록 한다 (마진값이 1이상 나지 않다면 의미가 없다)
- // if (Margin < 24) Margin = 25;
- // // 오름차순으로 정렬된 리스트를 기준으로 차례대로 간격을 계산해서 정렬한다
- // for (int j = 0; j < Order.Count; j++)
- // {
- // foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- // {
- // // Order 의 Y 값과 일치하는 것만 찾아서
- // if (Int32.Parse(Order[j].ToString()) == ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location.Y)
- // {
- // // X 좌표 : 기준점(최소값) + 마진
- // // Y 좌표 : 기준점(최소값)
- // ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Location = new Point(Criteria_X, Min_Value + (j * Margin));
- // break;
- // }
- // }
- // }
- // }
- //}
- ///
- /// 마우스 범위 벗어남
- ///
- private void Check_Icon_Location(_PictureBoxItem PictureBoxItem)
- {
- if (PictureBoxItem.Location.X < 0)
- PictureBoxItem.Location = new Point(0, PictureBoxItem.Location.Y);
- if (PictureBoxItem.Location.Y < 0)
- PictureBoxItem.Location = new Point(PictureBoxItem.Location.X, 0);
- if (PictureBoxItem.Location.X + PictureBoxItem.Size.Width > this.pictureBox_Background.Width)
- PictureBoxItem.Location = new Point(this.pictureBox_Background.Width - PictureBoxItem.Size.Width, PictureBoxItem.Location.Y);
- if (PictureBoxItem.Location.Y + PictureBoxItem.Size.Height > this.pictureBox_Background.Height)
- PictureBoxItem.Location = new Point(PictureBoxItem.Location.X, this.pictureBox_Background.Height - PictureBoxItem.Size.Height);
- }
- //
- // 디바이스
- //
- // 조회버튼
- private void uiButton_Device_Inq_Click(object sender, EventArgs e)
- {
- //** 디바이스가 IN인지 OUT인지 설정
- string Device_InOut = null;
- if (UiComboBox_Device_InOut.Text == "IN") Device_InOut = "I";
- else if (UiComboBox_Device_InOut.Text == "OUT") Device_InOut = "O";
- else Device_InOut = "";
- // 그리드이엑스 클리어 시키고 다시 조회
- GridEX_Device.ClearItems();
- // No.를 출력하기 위해서
- int i = 1;
- // CheckedComboBox_DeviceType콤보박스에서 선택한 항목들은 OR조건으로 검색, 나머지는 AND조건 검색
- int number = DeviceType.Count;
- // CheckedComboBox_DeviceType콤보박스에서 선택한 항목이 없을 경우
- if (number == 0)
- {
- // 아래와 같이 하는 이유는 통신보드를 1~14까지만 조회하기 위해서다
- // 조회하려는 통신보드에 값이 없으면 if문을 타고 값이 있으면 else 문을 탄다. SQL문이 달라지는 것이다
- DataRowCollection DB_TABLE_TB_DEVICE = null;
- if (UiComboBox_Board.Text.Length == 0)
- {
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- if (((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).MODEL == "IFC3300")
- {
- DB_TABLE_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_DEVICETable_NoneBoardID_BigReceiver("1", Device_InOut, _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), UiComboBox_Repeater.Text, EditBox_Position.Text, "", EditBox_DeviceName.Text, Seleted_RECEIVER_ID));
- }
- else
- {
- DB_TABLE_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_DEVICETable("1", Device_InOut, "15", _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), UiComboBox_Repeater.Text, EditBox_Position.Text, "", EditBox_DeviceName.Text, Seleted_RECEIVER_ID));
- }
- }
- else
- {
- DB_TABLE_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_DeviceTable("1", Device_InOut, UiComboBox_Board.Text, _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), UiComboBox_Repeater.Text, EditBox_Position.Text, "", EditBox_DeviceName.Text, Seleted_RECEIVER_ID));
- }
- if (DB_TABLE_TB_DEVICE != null)
- {
- foreach (DataRow dr in DB_TABLE_TB_DEVICE)
- {
- if (_Convert.Exception_Into_object(dr[3], dr[4], dr[5], dr[6], dr[7]) == true)
- {
- // 매개변수 순서 => COMM_ID, BOARD_ID, LOOP_NO, REPEATER_ID, DEVICE_ID, INOUT_TYPE
- MskDeviceIDString dev_s = new MskDeviceIDString(
- _Convert.Null_to_IntZero(dr[3].ToString()),
- _Convert.Null_to_IntZero(dr[4].ToString()),
- _Convert.Null_to_IntZero(dr[5].ToString()),
- _Convert.Null_to_IntZero(dr[6].ToString()),
- _Convert.Null_to_IntZero(dr[7].ToString()),
- dr[8].ToString(), Seleted_RECEIVER_ID); // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- GridEXRow row;
- row = GridEX_Device.AddItem();
- row.BeginEdit();
- row.Cells["Number"].Value = i++;
- row.Cells["ID"].Value = dev_s.MskId;
- row.Cells["DeviceType"].Value = dr[0].ToString();
- row.Cells["Position"].Value = dr[1].ToString();
- row.Cells["DeviceName"].Value = dr[2].ToString();
- row.EndEdit();
- }
- }
- }
- }
- // CheckedComboBox_DeviceType콤보박스에서 선택한 항목이 있을 경우 선택한 항목만큼 For문을 돌려 검색해서 출력
- else
- {
- for (int search = 0; search < number; search++)
- {
- // 아래와 같이 하는 이유는 통신보드를 1~14까지만 조회하기 위해서다
- // 조회하려는 통신보드에 값이 없으면 if문을 타고 값이 있으면 else 문을 탄다. SQL문이 달라지는 것이다
- DataRowCollection DB_TABLE_TB_DEVICE = null;
- if (UiComboBox_Board.Text.Length == 0)
- {
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- if (((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).MODEL == "IFC3300")
- {
- DB_TABLE_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_DEVICETable_NoneBoardID_BigReceiver("1", Device_InOut, _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), UiComboBox_Repeater.Text, EditBox_Position.Text, DeviceType[search].ToString(), EditBox_DeviceName.Text, Seleted_RECEIVER_ID));
- }
- else
- {
- DB_TABLE_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_DEVICETable("1", Device_InOut, "15", _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), UiComboBox_Repeater.Text, EditBox_Position.Text, DeviceType[search].ToString(), EditBox_DeviceName.Text, Seleted_RECEIVER_ID));
- }
- }
- else
- {
- DB_TABLE_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_DeviceTable("1", Device_InOut, UiComboBox_Board.Text, _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), UiComboBox_Repeater.Text, EditBox_Position.Text, DeviceType[search].ToString(), EditBox_DeviceName.Text, Seleted_RECEIVER_ID));
- }
- if (DB_TABLE_TB_DEVICE != null)
- {
- foreach (DataRow dr in DB_TABLE_TB_DEVICE)
- {
- if (_Convert.Exception_Into_object(dr[3], dr[4], dr[5], dr[6], dr[7]) == true)
- {
- // 매개변수 순서 => COMM_ID, BOARD_ID, LOOP_NO, REPEATER_ID, DEVICE_ID, INOUT_TYPE
- MskDeviceIDString dev_s = new MskDeviceIDString(
- _Convert.Null_to_IntZero(dr[3].ToString()),
- _Convert.Null_to_IntZero(dr[4].ToString()),
- _Convert.Null_to_IntZero(dr[5].ToString()),
- _Convert.Null_to_IntZero(dr[6].ToString()),
- _Convert.Null_to_IntZero(dr[7].ToString()),
- dr[8].ToString(), Seleted_RECEIVER_ID); // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- GridEXRow row;
- row = GridEX_Device.AddItem();
- row.BeginEdit();
- row.Cells["Number"].Value = i++;
- row.Cells["ID"].Value = dev_s.MskId;
- row.Cells["DeviceType"].Value = dr[0].ToString();
- row.Cells["Position"].Value = dr[1].ToString();
- row.Cells["DeviceName"].Value = dr[2].ToString();
- row.EndEdit();
- }
- }
- }
- }
- }
- // 디바이스 조회창 색상 반영 초기화 (순서는 절대 바꾸지 마십시오)
- GridexDevice_ChangeColor_By_TEMP();
- GridexDevice_ChangeColor_By_HASH();
- }
- // 디바이스창에서 회로번호를 토대로 색상 반영
- // 단, 이렇게 사용하면 느려질수 있다. 하지만 현재 색상을 적용하려면 이 방법외에 데이타베이스에 직접 필드를 추가하여 현재 적용된것인지 아닌지를 판단해야하는데
- // 현재 데이타베이스를 직접 수정하는 것은 지양하므로 퍼포먼스에 영향이 있을지 모르나 일단 이렇게 구현한다
- // 향후 이 루틴에서 속도가 현저하게 떨어지는 상황이 발생한다면 데이타베이스에서 처리하도록 해야한다
- // 디바이스 조회창 색상 반영 (임시 저장소 정보를 토대로 보여준다)
- public void GridexDevice_ChangeColor_By_TEMP()
- {
- //
- // 부하가 걸린다..구조상 어쩔수없다.. 삭제하려면 Device_Oper_ID 가 널인 조건인데 이미 돌리고 있는 디바이스 아이콘 리스트에는 그 정보가 없다. (상위 설명과 동일함)
- //
- GridEXRow[] GridEx_Rows = this.GridEX_Device.GetRows();
- foreach (GridEXRow row in GridEx_Rows)
- {
- row.BeginEdit();
- row.Cells["Apply"].Value = "NOT";
- row.EndEdit();
- }
- //
- // 현재 임시 리스트를 모두 뒤져보자
- //
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID != null)
- _Gridex.Column_Data_Edit(this.GridEX_Device, "ID=" + ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID, "Apply=" + "TEMP");
- }
- }
- this.GridEX_Device.ResumeLayout();
- }
- // 디바이스 조회창 색상 반영 (임시 저장소가 아닌 진짜 해쉬테이블 정보를 토대로 보여준다)
- public void GridexDevice_ChangeColor_By_HASH()
- {
- //
- // 전 페이지를 모두 뒤져보자.
- //
- foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).LIST_PAGE_ID)
- {
- ArrayList temp_list_icon_id = ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID;
- Hashtable temp_hash_icon = ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[Seleted_RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON;
- foreach (string ICON_ID in temp_list_icon_id)
- {
- if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Device)
- {
- if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_Oper_ID != null)
- _Gridex.Column_Data_Edit(this.GridEX_Device, "ID=" + ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_Oper_ID, "Apply=" + "HASH");
- }
- }
- }
- this.GridEX_Device.ResumeLayout();
- }
- //** 디바이스 클리어버튼
- private void uiButton_Device_Clear_Click(object sender, EventArgs e)
- {
- UiComboBox_Device_InOut.Text = null;
- UiComboBox_Board.Text = null;
- UiComboBox_Channel.Text = null;
- UiComboBox_Repeater.Text = null;
- EditBox_Position.Text = null;
- CheckedComboBox_DeviceType.Text = null;
- EditBox_DeviceName.Text = null;
- GridEX_Device.ClearItems();
- }
- //** 통신보드 콤보박스 Changing
- private void UiComboBox_Board_SelectedValueChanged(object sender, EventArgs e)
- {
- // 먼저 UiComboBox_Channel 콤보박스를 클리어시킴
- UiComboBox_Channel.Items.Clear();
- UiComboBox_Channel.Text = null;
- // UiComboBox_Board.Text가 공백이면 리턴
- if (UiComboBox_Board.Text.Length == 0) return;
- DataRowCollection DB_TABLE_TB_BOARD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_BoardTable("1", UiComboBox_Board.Text, "Y", Seleted_RECEIVER_ID));
- if (DB_TABLE_TB_BOARD != null)
- {
- // 공백도 하나 넣어둠
- if (UiComboBox_Channel.Items.Contains("") == false) UiComboBox_Channel.Items.Add("");
- foreach (DataRow dr in DB_TABLE_TB_BOARD)
- {
- if (dr[4].ToString() == "Y")
- {
- if (UiComboBox_Channel.Items.Contains("0") == false)
- UiComboBox_Channel.Items.Add("CH1");
- }
- if (dr[5].ToString() == "Y")
- {
- if (UiComboBox_Channel.Items.Contains("1") == false)
- UiComboBox_Channel.Items.Add("CH2");
- }
- if (dr[16].ToString() == "Y")
- {
- if (UiComboBox_Channel.Items.Contains("1") == false)
- UiComboBox_Channel.Items.Add("CH3");
- }
- if (dr[17].ToString() == "Y")
- {
- if (UiComboBox_Channel.Items.Contains("1") == false)
- UiComboBox_Channel.Items.Add("CH4");
- }
- }
- // 정렬
- UiComboBox_Channel.Items.Sort();
- }
- }
- //** 채널 콤보박스 Changing
- private void UiComboBox_Channel_SelectedValueChanged(object sender, EventArgs e)
- {
- // 먼저 UiComboBox_Repeater 콤보박스를 클리어시킴
- UiComboBox_Repeater.Items.Clear();
- UiComboBox_Repeater.Text = null;
- // UiComboBox_Board.Text 및 UiComboBox_Channel.Text가 공백이면 리턴
- if (UiComboBox_Board.Text.Length == 0) return;
- if (UiComboBox_Channel.Text.Length == 0) return;
- DataRowCollection DB_TABLE_TB_REPEATER = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_RepeaterTable("1", UiComboBox_Board.Text, _Data.UI_CH_TO_LOOP(UiComboBox_Channel.Text), Seleted_RECEIVER_ID));
- if (DB_TABLE_TB_REPEATER != null)
- {
- // 공백도 하나 넣어둠
- if (UiComboBox_Repeater.Items.Contains("") == false) UiComboBox_Repeater.Items.Add("");
- foreach (DataRow dr in DB_TABLE_TB_REPEATER)
- {
- if (UiComboBox_Repeater.Items.Contains(dr[4].ToString()) == false)
- UiComboBox_Repeater.Items.Add(dr[4].ToString());
- }
- // 정렬
- UiComboBox_Repeater.Items.Sort();
- }
- }
- //** CheckedComboBox_DeviceType콤보박스에 체크가 변경될때마다 발생하는 이벤트
- private void CheckedComboBox_DeviceType_CheckedValuesChanged(object sender, EventArgs e)
- {
- //** DeviceType을 ArrayList에 저장하기 위해서
- DeviceType.Clear();
- //** sender을 이용하는 이유는 clear를 했을때를 알기 위해서
- CheckedComboBox checkedcombobox = (CheckedComboBox)sender;
- //** 이렇게 하는 이유는 clear버튼을 사용해 텍스트를 클리어 했을 때에, 콤보박스는 이전에 선택했을 값을 가지고 있다고 여김
- // 그래서 아래의 속성으로 clear버튼을 클릭했을 때에는 해당 루틴을 타지 못하게 함
- if (checkedcombobox.Text.Length != 0)
- {
- // 아래와 같이 포커스를 주는 이유는 야누스 콤포넌트의 에러 때문이다
- uiButton_Device_Inq.Focus();
- // 콤보박스에 체크되어 있는 것만 알기 위해서
- GridEXRow[] GridEx_Rows = this.CheckedComboBox_DeviceType.DropDownList.GetRows();
- foreach (GridEXRow row in GridEx_Rows)
- {
- if (row.Cells["Check"].Value.ToString() == "True")
- DeviceType.Add(row.Cells["Device_Type"].Value.ToString());
- }
- }
- }
- // 연동버튼 클릭 전에 사전 검사 (정상인 경우에만 디바이스명이 리턴됨, 아니라면 null)
- private string uiButton_Device_Apply_Verify()
- {
- // 디바이스 연동알림 팝업창이 켜져있는 경우에는 실행 못함
- if (Popup_DeviceOper == null || Popup_DeviceOper.Visible == true)
- return null;
- // 리스트에 포커스는 반드시 1개
- if (GridEX_Device.SelectedItems.Count != 1)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.OnlyOneSelectedGridEx, 0);
- return null;
- }
- // 워크뷰에서 선택한 아이템이 없다면 클릭해도 소용없다, 단 1개만 선택되어야 한다 또한 반드시 디바이스 아이콘이어야 한다
- int Selected_ICON_Count = 0;
- string Selected_ICON_Name = null;
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true && ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
- {
- Selected_ICON_Count++;
- Selected_ICON_Name = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Icon_NAME;
- }
- }
- // 반드시 아이콘은 1개만 사용, 또한 선택
- if (Selected_ICON_Count != 1 || Selected_ICON_Name == null)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.OnlyOneSelectedICON, 0);
- return null;
- }
- return Selected_ICON_Name;
- }
- // 연동버튼 클릭
- private void uiButton_Device_Apply_Click(object sender, EventArgs e)
- {
- string result = uiButton_Device_Apply_Verify();
- if (result != null)
- {
- // 회로번호
- string Temp_Selected_DeviceInfo = this.GridEX_Device.CurrentRow.Cells["ID"].Value.ToString();
- // 아이템명
- string Temp_Selected_PictureBoxItem = result;
- // 팝업창 준비
- if (Popup_DeviceOper != null) Popup_DeviceOper.Close();
- Popup_DeviceOper = new Form();
- // 선택한 아이템과 디바이스를 연동하시겠습니까
- Popup_DeviceOper = _Popup.Create(Popup_Type.Dialog, Popup_Style.Normal, _Text.OK, 600, 150,
- _Text.DeviceOperSave + " [" + _Text.DeviceOperSave_OperID + Temp_Selected_DeviceInfo + "] = ["
- + _Text.DeviceOperSave_Item + Temp_Selected_PictureBoxItem + " ]", 0);
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event += new _Event.PopupClose_SendMessage_Handler(_Event_DeviceOperSave_PopupClose_SendMessage_Event);
- }
- }
- // 디바이스 연동 적용 이벤트
- public void _Event_DeviceOperSave_PopupClose_SendMessage_Event(object sender, object etc)
- {
- // 대화 팝업 주체
- Form popup = (Form)sender;
- if (Popup_DeviceOper.Name == popup.Name && etc.ToString() == _Text.OK)
- {
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Selected == true)
- {
- // 상태창 반영
- UI_Status_Write(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]));
- // 트리에 반영
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Button)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.OnlyButtonSelectedICON, 0);
- return;
- }
- else
- {
- // 디바이스 아이디가 회로번호이므로 반영
- // 트리 검색
- TreeNode EditNode = _Tree.GetNode_By_Name(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name);
- ///
- /// 동적 할당 변수 처리
- ///
- // 디바이스 연동 회로 아이디
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID = this.GridEX_Device.CurrentRow.Cells["ID"].Value.ToString();
- // 디바이스 연동 명칭
- ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_DB_Name = this.GridEX_Device.CurrentRow.Cells["DeviceName"].Value.ToString();
- // 트리에 반영
- EditNode.Text = ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).NodeText();
- // 오브젝트 트리 색상 반영 (디바이스)
- _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Name, ((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID);
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- ObjectTree_RootNodeUpdate();
- // 디바이스 조회창 색상 반영 초기화 (순서는 절대 바꾸지 마십시오)
- GridexDevice_ChangeColor_By_TEMP();
- GridexDevice_ChangeColor_By_HASH();
- }
- break;
- }
- }
- }
- // 대화 팝업은 특별처리
- _Event.PopupClose_SendMessage_Event -= new _Event.PopupClose_SendMessage_Handler(_Event_DeviceOperSave_PopupClose_SendMessage_Event);
- }
- ///
- /// 오브젝트 트리 노드
- ///
- // 노드를 선택하면 해당 아이콘이 점멸된다
- private void treeView_ObjetTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
- {
- // 선택한 노드 정보와 일치하는 픽쳐박스
- _PictureBoxItem PictureBoxItem = null;
- // 오른쪽마우스를 누르면 왼쪽마우스 버튼을 누른것처럼 포커스를 이동한다
- treeView_ObjectTree.SelectedNode = treeView_ObjectTree.GetNodeAt(e.X, e.Y);
- // 아이템 (디바이스 아이콘 혹은 버튼 아이콘 선택 초기화)
- pictureBox_SeletedStatusInitialize();
- // 선택한 노드의 아이디를 토대로 아이템을 찾는다
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- if (e.Node.Name == ICON_ID)
- {
- PictureBoxItem = (_PictureBoxItem)TEMP_HASH_ICON[ICON_ID];
- break;
- }
- }
- // 노드를 찾지 못하면 실행 안함
- if (PictureBoxItem != null)
- {
- // 선택
- Selected_PictureBoxItem = null;
- // 상태갱신
- UI_Status_Write(PictureBoxItem);
- // 선택
- Selected_PictureBoxItem = PictureBoxItem;
- // 선택시 스타일 변경 (주변에 네모박스 보이도록 출력)
- Selected_PictureBoxItem.Selected = true;
- Selected_PictureBoxItem.ShapeContainer_Seleted.Visible = true;
- }
- // 오른쪽 마우스 버튼
- if (e.Button == System.Windows.Forms.MouseButtons.Right)
- {
- // 페이지 노드
- if (e.Node.Level == 0)
- {
- // 아이콘 전체삭제
- _Contextmenustrip.Create(this.treeView_ObjectTree, e.Location,
- _Text.IconAllDel,
- treeView_ObjectTree_Menustrip_ItemClicked);
- }
- else if (e.Node.Level == 1)
- {
- if (e.Node.Name == "DEVICE")
- {
- // 디바이스 전체삭제
- // 디바이스연동 전체초기화
- _Contextmenustrip.Create(this.treeView_ObjectTree, e.Location,
- _Text.DeviceLinkAllClear + ";" +
- _Text.ContextStripSeparator + ";" +
- _Text.DeviceAllDel,
- treeView_ObjectTree_Menustrip_ItemClicked);
- }
- else if (e.Node.Name == "BUTTON")
- {
- // 버튼 전체삭제
- // 점프페이지 전체초기화
- _Contextmenustrip.Create(this.treeView_ObjectTree, e.Location,
- _Text.ButtonJumpAllClear + ";" +
- _Text.ContextStripSeparator + ";" +
- _Text.ButtonAllDel,
- treeView_ObjectTree_Menustrip_ItemClicked);
- }
- }
- else if (e.Node.Level == 2)
- {
- if (e.Node.ImageIndex == (int)Object_Type.DEVICE_DETAIL)
- {
- // 디바이스 삭제
- // 디바이스연동 초기화
- _Contextmenustrip.Create(this.treeView_ObjectTree, e.Location,
- _Text.DeviceLinkClear + ";" +
- _Text.ContextStripSeparator + ";" +
- _Text.DeviceDel,
- treeView_ObjectTree_Menustrip_ItemClicked);
- }
- else if (e.Node.ImageIndex == (int)Object_Type.BUTTON_DETAIL)
- {
- // 버튼 삭제
- // 점프페이지 초기화
- _Contextmenustrip.Create(this.treeView_ObjectTree, e.Location,
- _Text.ButtonJumpClear + ";" +
- _Text.ContextStripSeparator + ";" +
- _Text.ButtonDel,
- treeView_ObjectTree_Menustrip_ItemClicked);
- }
- }
- }
- // 왼쪽 마우스 버튼
- else
- {
- if (Selected_PictureBoxItem != null)
- {
- // 버튼 아이콘이라면 상태바에서 점프페이지 선택가능함
- if (Selected_PictureBoxItem.ItemType == Item_Type.Button)
- {
- this.uiComboBox_Status_Jump.ReadOnly = false;
- this.uiComboBox_Status_Jump.BackColor = System.Drawing.Color.White;
- if (Selected_PictureBoxItem.Button_JumpPageName != null
- && Selected_PictureBoxItem.Button_JumpPageName.Length != 0
- && Selected_PictureBoxItem.Button_JumpPageName != _Text.None)
- this.uiComboBox_Status_Jump.Text = Selected_PictureBoxItem.Button_JumpPageName;
- else
- this.uiComboBox_Status_Jump.Text = _Text.None;
- }
- // 디바이스 아이콘이라면 상태바에서 점프페이지 선택불가
- else
- {
- this.uiComboBox_Status_Jump.ReadOnly = true;
- this.uiComboBox_Status_Jump.BackColor = System.Drawing.SystemColors.MenuBar;
- this.uiComboBox_Status_Jump.Text = _Text.None;
- }
- }
- }
- }
- public void treeView_ObjectTree_Menustrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
- {
- // 호출한 것은 감추기
- ContextMenuStrip menustrip = (ContextMenuStrip)sender;
- // 잔상 삭제
- menustrip.Hide();
- // 아이콘 전체삭제
- if (e.ClickedItem.Text == _Text.IconAllDel)
- {
- Common_IconAllDel();
- }
- // 디바이스 전체삭제
- else if (e.ClickedItem.Text == _Text.DeviceAllDel)
- {
- Common_DeviceAllDel();
- }
- // 디바이스연동 전체초기화
- else if (e.ClickedItem.Text == _Text.DeviceLinkAllClear)
- {
- Common_DeviceLinkAllClear();
- }
- // 버튼 전체삭제
- else if (e.ClickedItem.Text == _Text.ButtonAllDel)
- {
- Common_ButtonAllDel();
- }
- // 점프페이지 전체초기화
- else if (e.ClickedItem.Text == _Text.ButtonJumpAllClear)
- {
- Common_ButtonJumpAllClear();
- }
- // 디바이스 삭제
- else if (e.ClickedItem.Text == _Text.DeviceDel)
- {
- Common_IconSelDel();
- }
- // 디바이스연동 초기화
- else if (e.ClickedItem.Text == _Text.DeviceLinkClear)
- {
- Common_DeviceLinkClear();
- }
- // 버튼 삭제
- else if (e.ClickedItem.Text == _Text.ButtonDel)
- {
- Common_IconSelDel();
- }
- // 점프페이지 초기화
- else if (e.ClickedItem.Text == _Text.ButtonJumpClear)
- {
- Common_ButtonJumpClear();
- }
- }
- //
- // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
- //
- public void ObjectTree_RootNodeUpdate()
- {
- // 아이콘의 총 개수 및 적용 개수를 파악하기 위한 변수
- int ButtonIcon_AllCnt = 0;
- int ButtonIcon_ApplyCnt = 0;
- int DeviceIcon_AllCnt = 0;
- int DeviceIcon_ApplyCnt = 0;
- foreach (string ICON_ID in TEMP_LIST_ICON_ID)
- {
- // 버튼 아이콘의 경우 처리
- if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Button)
- {
- // 개수 파악
- ButtonIcon_AllCnt++;
- if (_Data.Get_Verify_ID(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Button_JumpPageName) != "0") ButtonIcon_ApplyCnt++;
- }
- // 디바이스 아이콘의 경우 처리
- else if (((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
- {
- // 개수 파악
- DeviceIcon_AllCnt++;
- if (_Data.Get_Verify_ID(((_PictureBoxItem)TEMP_HASH_ICON[ICON_ID]).Device_Oper_ID) != "0") DeviceIcon_ApplyCnt++;
- }
- }
- // 트리에 표시
- _Tree.SetNodeText_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_BUTTON_ICON,
- string.Format("{0} [총합:{1} 적용:{2}]", _Text.UI_TREE_BUTTON_ICON, ButtonIcon_AllCnt, ButtonIcon_ApplyCnt));
- _Tree.SetNodeText_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_DEVICE_ICON,
- string.Format("{0} [총합:{1} 적용:{2}]", _Text.UI_TREE_DEVICE_ICON, DeviceIcon_AllCnt, DeviceIcon_ApplyCnt));
- }
- // 아이콘 잠금 기능
- private void UI_Base_IconLock(bool Enable)
- {
- if (Enable == true)
- {
- this.uiCheckBox_IconLock.Checked = true;
- this.uiCheckBox_IconLock.Text = "LOCK";
- this.uiCheckBox_IconLock.BackColor = Color.Red;
- }
- else
- {
- this.uiCheckBox_IconLock.Checked = false;
- this.uiCheckBox_IconLock.Text = "UNLOCK";
- this.uiCheckBox_IconLock.BackColor = Color.Transparent;
- }
- }
- // 아이콘 잠금
- private void uiCheckBox_IconLock_CheckedChanged(object sender, EventArgs e)
- {
- UI_Base_IconLock(this.uiCheckBox_IconLock.Checked);
- }
- // 디바이스 조회창에서 카운트 결과 표시
- private void uiButton_Device_Result_Click(object sender, EventArgs e)
- {
- // 현재 조회창
- GridEXRow[] GridEx_Rows = this.GridEX_Device.GetRows();
- // 조회창의 총개수
- int Cnt_All = 0;
- // 조회창의 연동미적용수
- int Cnt_OperNot = 0;
- // 조회창의 연동미적용 중의 마지막 순번
- string Last_Number = null;
- foreach (GridEXRow row in GridEx_Rows)
- {
- Cnt_All++;
- if (row.Cells["Apply"].Value == null
- || row.Cells["Apply"].Value.ToString().Trim().Length == 0
- || row.Cells["Apply"].Value.ToString() == "NOT"
- || row.Cells["Apply"].Value.ToString() == _Text.Blank)
- {
- Cnt_OperNot++;
- Last_Number = row.Cells["Number"].Value.ToString();
- }
- }
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 500, 150, string.Format(_Text.DeviceOperResult, Cnt_All, Cnt_OperNot, Last_Number), 0);
- }
- }
- }
|