package com.cari.voip.keyboard.soft.views; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.Separator; 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.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchActionConstants; 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.ViewPart; import com.cari.voip.keyboard.soft.Activator; import com.cari.voip.keyboard.soft.adapter.conf.ConfAdapterFactory; import com.cari.voip.keyboard.soft.model.Presence; import com.cari.voip.keyboard.soft.model.conf.APsEntry; import com.cari.voip.keyboard.soft.model.conf.APsGroup; import com.cari.voip.keyboard.soft.model.conf.ConfSession; import com.cari.voip.keyboard.soft.model.conf.Contact; import com.cari.voip.keyboard.soft.model.conf.ContactsEntry; import com.cari.voip.keyboard.soft.model.conf.ContactsGroup; import com.cari.voip.keyboard.soft.model.conf.IADsEntry; import com.cari.voip.keyboard.soft.model.conf.IADsGroup; import com.cari.voip.keyboard.soft.model.conf.SwitchsEntry; import com.cari.voip.keyboard.soft.model.conf.SwitchsGroup; public class BookMarksView extends ViewPart { public static final String ID_VIEW = BookMarksView.class.getName(); private static int webViewIndex = 1; //private Label label; private Action actionAddBookmark; private TreeViewer treeViewer; private IAdapterFactory adapterFactory = new ConfAdapterFactory(); private ConfSession session; public BookMarksView() { super(); } @Override public void createPartControl(Composite parent) { Composite comp= new Composite(parent, SWT.NONE); comp.setLayout(new FillLayout(SWT.VERTICAL)); /* label.addMouseListener(new MouseListener(){ public void mouseDown(MouseEvent e){ } public void mouseUp(MouseEvent e){ } public void mouseDoubleClick(MouseEvent e){ try{ WebBrowserView webView = (WebBrowserView) getViewSite().getWorkbenchWindow().getActivePage() .showView(WebBrowserView.ID_VIEW, Integer.toString(webViewIndex), IWorkbenchPage.VIEW_ACTIVATE); webViewIndex++; webView.navigateTo(label.getText()); }catch(PartInitException ex){ ex.printStackTrace(); } } });*/ initSession(); initTreeViewer(comp); //label = new Label(comp,SWT.NONE); //label.setText(Integer.toString(this.session.getRoot().getEntries().length)); makeActions(); contributeToActionBars(); } private void initTreeViewer(Composite parent) { this.treeViewer = new TreeViewer(parent,SWT.BORDER|SWT.MULTI|SWT.V_SCROLL); Platform.getAdapterManager().registerAdapters(this.adapterFactory, Contact.class); getSite().setSelectionProvider(this.treeViewer); this.treeViewer.setLabelProvider(new WorkbenchLabelProvider()); this.treeViewer.setContentProvider(new BaseWorkbenchContentProvider()); 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(); if(obj instanceof ContactsEntry ){ ContactsEntry entry = (ContactsEntry)obj; tryOpenWeb(entry.getUrl()); } } } } ); } private void initSession() { this.session = new ConfSession(); this.session.init(); } private void contributeToActionBars() { IActionBars bars = getViewSite().getActionBars(); fillLocalPullDown(bars.getMenuManager()); fillLocalToolBar(bars.getToolBarManager()); } private void fillLocalPullDown(IMenuManager menuManager) { menuManager.add(actionAddBookmark); menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } private void fillLocalToolBar(IToolBarManager toolBarManager) { toolBarManager.add(actionAddBookmark); toolBarManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } private void makeActions() { actionAddBookmark = new Action(){ public void run(){ } }; actionAddBookmark.setText("����"); actionAddBookmark.setToolTipText("����"); actionAddBookmark.setImageDescriptor(Activator.getImageDescriptor("icons/add.png")); } @Override public void setFocus() { this.treeViewer.getControl().setFocus(); } public void addBookmark(final String url){ //label.setText(url); } public void dispose() { Platform.getAdapterManager().unregisterAdapters(this.adapterFactory); super.dispose(); } public void tryOpenWeb(String url){ if(url == null || url.length() == 0){ return; } try{ WebBrowserView view = (WebBrowserView)getViewSite().getWorkbenchWindow().getActivePage() .showView(WebBrowserView.ID_VIEW, Integer.toString(webViewIndex), IWorkbenchPage.VIEW_ACTIVATE); view.navigateTo(url); webViewIndex++; }catch(PartInitException ex){ ex.printStackTrace(); } } }