package com.netifera.platform.net.wifi.ui.views;
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.widgets.Composite;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.part.ViewPart;
import com.netifera.platform.api.model.IEntity;
import com.netifera.platform.api.model.ISpace;
import com.netifera.platform.net.model.InternetAddressEntity;
import com.netifera.platform.net.wifi.model.WirelessStationEntity;
import com.netifera.platform.net.wifi.ui.Activator;
import com.netifera.platform.net.wifi.ui.ISpaceChangeListener;
import com.netifera.platform.ui.spaces.ISpaceEditor;
public class WirelessView extends ViewPart implements ISpaceChangeListener {
public static String ID = "com.netifera.platform.views.wifi";
private TreeViewer treeViewer;
public WirelessView() {
}
@Override
public void createPartControl(Composite parent) {
Activator.getDefault().registerSpaceChangeListener(this);
treeViewer = new TreeViewer(parent, SWT.NONE);
treeViewer.getTree().setHeaderVisible(true);
treeViewer.setLabelProvider(new WirelessLabelProvider());
treeViewer.setContentProvider(new WirelessContentProvider());
treeViewer.setInput(Activator.getDefault().getCurrentSpace());
treeViewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
if(event.getSelection() instanceof IStructuredSelection)
doubleClickHandler((IStructuredSelection) event.getSelection());
}
});
}
private void doubleClickHandler(IStructuredSelection selection) {
if(!(selection.getFirstElement() instanceof IEntity))
return;
focusWirelessEntity((IEntity) selection.getFirstElement());
}
private void focusWirelessEntity(IEntity entity) {
final ISpaceEditor editor = Activator.getDefault().getCurrentSpaceEditor();
if(editor == null)
return;
if(entity instanceof WirelessStationEntity) {
focusStationEntity(editor, (WirelessStationEntity) entity);
} else {
editor.focusEntity(entity);
}
}
private void focusStationEntity(ISpaceEditor editor, WirelessStationEntity station) {
if(!(station.getNetworkAddress() instanceof InternetAddressEntity))
return;
final InternetAddressEntity address = (InternetAddressEntity) station.getNetworkAddress();
editor.focusEntity(address.getHost());
}
@Override
public void setFocus() {
treeViewer.getTree().setFocus();
}
public void spaceChanged(ISpace space) {
treeViewer.setInput(space);
}
}