package com.cari.voip.keyboard.soft;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.util.BundleUtility;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
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.SwitchUserInput;
import com.cari.voip.keyboard.soft.model.switchUsers.SwitchEntity;
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.views.GraphGroupView;
import com.cari.voip.keyboard.soft.views.GraphNodeView;
import com.cari.voip.keyboard.stack.ConnectionConfiguration;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "com.cari.voip.keyboard.soft";
//public static ISharedImages sharedImgs = PlatformUI.getWorkbench().getSharedImages();
// The shared instance
private static Activator plugin;
private static SwitchUsersSession switchUsersSession = null;
private static Display display = null;// PlatformUI.createDisplay();
public static boolean usersFirstShow = true;
public static boolean groupsFirstShow = true;
public static SwitchUsersAdapterFactory usersAdapterFactory = new SwitchUsersAdapterFactory();
private static int viewIndex = 0;
/**
* The constructor
*/
public Activator() {
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
/**
* Returns an image descriptor for the image file at the given
* plug-in relative path
*
* @param path the path
* @return the image descriptor
*/
public static ImageDescriptor getImageDescriptor(String path) {
return imageDescriptorFromPlugin(PLUGIN_ID, path);
}
public static IViewPart getView(IWorkbenchWindow workbenchWindow,
String idView) {
// TODO Auto-generated method stub
IViewReference[] refs = workbenchWindow.getActivePage().getViewReferences();
for(IViewReference viewReference:refs){
if(viewReference.getId().equals(idView)){
return viewReference.getView(true);
}
}
return null;
}
/* public static Image createImage(String name) {
InputStream stream = Activator.class.getResourceAsStream(name);
Image image = new Image(null,stream);
try {
stream.close();
} catch (IOException ioe) {
}
return image;
}*/
public static SwitchUsersSession getSwitchUsersSession(){
if( Activator.switchUsersSession == null){
Activator.switchUsersSession = new SwitchUsersSession();
}
return Activator.switchUsersSession ;
}
public static Display getDisplay(){
if(display == null){
display = PlatformUI.createDisplay();
}
return display;
}
/*public static void showGroupViewFromModel(IWorkbenchPage page,Object obj){
if(page == null || obj == null){
return;
}
if(obj instanceof SwitchUsersManager){
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 != null && 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 static void showUserViewFromModel(IWorkbenchPage page,Object obj){
if(page == null || obj == null){
return;
}
if(obj instanceof SwitchUsersGroup){
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 != null && 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(IWorkbenchPage page,Object obj){
if(page == null && obj == null){
return;
}
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)
}
public static String getHeaderText(){
SwitchUsersSession session = Activator.getSwitchUsersSession();
if(session != null){
ConnectionConfiguration detail = session.getConnectionDetail();
if(detail != null){
return detail.getUser();
}
}
return "���(����)�Զ����ɷ�����˾����ָ������";
}
}