package com.cari.voip.keyboard.soft.views; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IViewReference; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.model.BaseWorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.part.EditorPart; import org.eclipse.ui.part.ViewPart; import com.cari.voip.keyboard.soft.Activator; import com.cari.voip.keyboard.soft.adapter.switchUsers.SwitchUsersAdapterFactory; import com.cari.voip.keyboard.soft.editors.SwitchUserGraphicalEditor; import com.cari.voip.keyboard.soft.editors.input.GatewayInput; import com.cari.voip.keyboard.soft.editors.input.SwitchUserInput; //import com.cari.voip.keyboard.soft.adapter.switchUsers.SwitchUsersTreeAdapterFactory; import com.cari.voip.keyboard.soft.model.switchUsers.SwitchEntity; import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUser; import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUsersGroup; import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUsersManager; import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUsersSession; //import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUsersTree; //import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUsersTreeEntry; //import com.cari.voip.keyboard.soft.model.switchUsers.SwitchUsersTreeGroup; public class StatusView extends ViewPart { public static final String ID_VIEW = "com.cari.voip.keyboard.soft.views.StatusView"; private TreeViewer treeViewer; //private IAdapterFactory adapterFactory = new SwitchUsersTreeAdapterFactory(); private IAdapterFactory adapterFactory = new SwitchUsersAdapterFactory(); private SwitchUsersSession session; private int viewIndex = 0; public StatusView() { super(); } @Override public void createPartControl(Composite parent) { //Composite comp= new Composite(parent, SWT.NONE); //comp.setLayout(new FillLayout(SWT.VERTICAL)); initSession(); initTreeViewer(parent); //Label label = new Label(parent,SWT.CENTER); //label.setText("hello"); } private void initTreeViewer(Composite parent) { this.treeViewer = new TreeViewer(parent,SWT.BORDER|SWT.MULTI|SWT.V_SCROLL); /* Platform.getAdapterManager().registerAdapters(this.adapterFactory,SwitchUsersTreeGroup.class); Platform.getAdapterManager().registerAdapters(this.adapterFactory,SwitchUsersTreeEntry.class); */ Platform.getAdapterManager().registerAdapters(this.adapterFactory,SwitchUsersManager.class); Platform.getAdapterManager().registerAdapters(this.adapterFactory,SwitchUsersGroup.class); Platform.getAdapterManager().registerAdapters(this.adapterFactory,SwitchUser.class); Platform.getAdapterManager().registerAdapters(this.adapterFactory,SwitchUsersSession.class); getSite().setSelectionProvider(this.treeViewer); this.treeViewer.setLabelProvider(new WorkbenchLabelProvider()); this.treeViewer.setContentProvider(new BaseWorkbenchContentProvider()); //this.treeViewer.setInput(this.session.getTreeRoot()); this.treeViewer.setInput(this.session.getRoot()); this.treeViewer.addDoubleClickListener(new IDoubleClickListener(){ public void doubleClick(DoubleClickEvent event){ ISelection selection = event.getSelection(); if(selection instanceof IStructuredSelection){ Object obj = ((IStructuredSelection)selection).getFirstElement(); //activeEditorFromModel(obj); if(obj instanceof SwitchUsersGroup){ showViewFromModel(obj); } else if(obj instanceof SwitchUsersManager){ showGroupViewFromModel(obj); } }//if(selection instanceof IStructuredSelection){ }//public void doubleClick(DoubleClickEvent event){ }); } public void showGroupViewFromModel(Object obj) { if(obj instanceof SwitchUsersManager){ IWorkbenchPage page = getSite().getPage(); GraphGroupView view = null; IViewReference[] viewRefs = page.getViewReferences(); for(IViewReference viewRef:viewRefs){ if(viewRef.getId().equals(GraphGroupView.ID_VIEW)){ GraphGroupView viewTmp = (GraphGroupView)viewRef.getView(true); if(viewTmp.getModel().equals(obj)){ view = viewTmp; } } } if(view == null){ try{ view = (GraphGroupView)page.showView(GraphGroupView.ID_VIEW, Integer.toString(viewIndex++), IWorkbenchPage.VIEW_ACTIVATE); view.setName(((SwitchEntity)obj).getName()); view.setAdapterFactory(new SwitchUsersAdapterFactory()); view.setModel(obj); view.makeGraphNodesFromModel(); }catch(Exception e){ if(view != null){ view.dispose(); } e.printStackTrace(); } }else{ page.activate(view); } } } public void showViewFromModel(Object obj){ if(obj instanceof SwitchUsersGroup){ IWorkbenchPage page = getSite().getPage(); GraphNodeView view = null; IViewReference[] viewRefs = page.getViewReferences(); for(IViewReference viewRef:viewRefs){ if(viewRef.getId().equals(GraphNodeView.ID_VIEW)){ GraphNodeView viewTmp = (GraphNodeView)viewRef.getView(true); if(viewTmp.getModel().equals(obj)){ view = viewTmp; } } } if(view == null){ try{ view = (GraphNodeView)page.showView(GraphNodeView.ID_VIEW, Integer.toString(viewIndex++), IWorkbenchPage.VIEW_ACTIVATE); view.setName(((SwitchEntity)obj).getName()); view.setAdapterFactory(new SwitchUsersAdapterFactory()); view.setModel(obj); view.makeGraphNodesFromModel(); }catch(Exception e){ if(view != null){ view.dispose(); } e.printStackTrace(); } }else{ page.activate(view); } } } protected void activeEditorFromModel(Object obj){ if(obj instanceof SwitchUsersGroup){ IWorkbenchPage page = getSite().getPage(); IEditorPart editor = null; IEditorInput input = null; IEditorReference[] editorRefs = page.getEditorReferences(); for(IEditorReference editorRef:editorRefs){ IEditorInput inputTmp = null; try { inputTmp = editorRef.getEditorInput(); } catch (PartInitException e) { inputTmp = null; } if(inputTmp == null){ continue; } if(inputTmp instanceof SwitchUserInput){ if(((SwitchUserInput)inputTmp).getSwitchUsersGroup().equals(obj)){ editor = editorRef.getEditor(true); break; } } } if(editor == null){ input = new SwitchUserInput((SwitchUsersGroup)obj); try{ editor = page.openEditor(input, SwitchUserGraphicalEditor.ID, true); if(editor instanceof SwitchUserGraphicalEditor){ ((SwitchUserGraphicalEditor)editor).setName( ((SwitchUsersGroup)obj).getName()); } }catch(Exception e){ if(editor != null){ editor.dispose(); } e.printStackTrace(); } }//if(editor == null) else{ page.activate(editor); } }//if(obj instanceof SwitchUsersGroup) } private void initSession() { this.session = Activator.getSwitchUsersSession(); //this.session.init(); } @Override public void setFocus() { this.treeViewer.getControl().setFocus(); } public void dispose() { Platform.getAdapterManager().unregisterAdapters(this.adapterFactory); super.dispose(); } }