package com.cari.voip.keyboard.soft.views.shell;
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.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.model.BaseWorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider;
import com.cari.voip.keyboard.soft.Activator;
import com.cari.voip.keyboard.soft.adapter.switchUsers.SwitchUsersAdapterFactory;
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;
public class userShell {
private static Shell shell;
private static Display displayDevice;
private static TreeViewer treeViewer;
private static IAdapterFactory adapterFactory = new SwitchUsersAdapterFactory();
private static SwitchUsersSession session;
private static IDoubleClickListener dlistern;
public static Shell getShell(Display displayDevice){
if(shell == null){
//displayDevice = Activator.getDisplay();
shell = new Shell(displayDevice,SWT.ON_TOP);
shell.setLayout(new FillLayout());
treeViewer = new TreeViewer(shell,SWT.BORDER|SWT.MULTI|SWT.V_SCROLL);
Platform.getAdapterManager().registerAdapters(adapterFactory,SwitchUsersManager.class);
Platform.getAdapterManager().registerAdapters(adapterFactory,SwitchUsersGroup.class);
Platform.getAdapterManager().registerAdapters(adapterFactory,SwitchUser.class);
Platform.getAdapterManager().registerAdapters(adapterFactory,SwitchUsersSession.class);
session = Activator.getSwitchUsersSession();
//getSite().setSelectionProvider(this.treeViewer);
treeViewer.setLabelProvider(new WorkbenchLabelProvider());
treeViewer.setContentProvider(new BaseWorkbenchContentProvider());
//this.treeViewer.setInput(this.session.getTreeRoot());
treeViewer.setInput(session.getlocalUserManager());
shell.pack();
treeViewer.getControl().addFocusListener(new FocusListener (){
public void focusGained(FocusEvent e){
}
public void focusLost(FocusEvent e){
if(shell.isVisible()){
shell.setVisible(false);
}
}
});
treeViewer.addDoubleClickListener(new IDoubleClickListener(){
@Override
public void doubleClick(DoubleClickEvent event) {
if(shell.isVisible()){
shell.setVisible(false);
}
}
});
}else{
treeViewer.refresh();
shell.pack();
}
return shell;
}
public static void setVisible(Display displayDevice,Rectangle dateRect,IDoubleClickListener listener){
//if(shell == null){
getShell(displayDevice);
//}
if(shell == null || treeViewer == null){
return;
}
if(listener != dlistern){
if(dlistern != null){
treeViewer.removeDoubleClickListener(dlistern);
}
if(listener != null){
treeViewer.addDoubleClickListener(listener);
dlistern = listener;
}
}
Rectangle calRect= shell.getBounds();
shell.setBounds(
dateRect.x, dateRect.y+dateRect.height-200, calRect.width, calRect.height<100?100:calRect.height
);
shell.setVisible(true);
treeViewer.getControl().setFocus();
}
}