package eu.jucy.connectiondebugger;
import java.util.Arrays;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import eu.jucy.connectiondebugger.CryptoInfo.CryptoInfoEntry;
import uihelpers.TableViewerAdministrator;
public class CryptoComposite extends Composite {
private TableViewer tableViewer;
private TableViewerAdministrator<CryptoInfoEntry> tva;
private StyledText text ;
public CryptoComposite(Composite parent, int style) {
super(parent, style);
GridLayout gd = new GridLayout();
gd.numColumns = 2;
this.setLayout( gd);
tableViewer = new TableViewer(this,SWT.BORDER|SWT.SINGLE);
GridData gridData = new GridData(SWT.FILL,SWT.FILL,false,true );
getTable().setLayoutData(gridData);
// getTable().setHeaderVisible(true);
tableViewer.setContentProvider(new CryptoContentProvider());
tva = new TableViewerAdministrator<CryptoInfoEntry>(tableViewer,
Arrays.asList(new CryptoInfoColumn()),DebuggerView.ID+".crypto",
TableViewerAdministrator.NoSorting,false);
tva.apply();
GridData gridData2 = new GridData(SWT.FILL,SWT.FILL,true,true );
text = new StyledText(this, SWT.BORDER|SWT.V_SCROLL);
text.setLayoutData(gridData2);
tableViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection sel = (IStructuredSelection)event.getSelection();
if (sel.getFirstElement() instanceof CryptoInfoEntry) {
CryptoInfoEntry cie = (CryptoInfoEntry)sel.getFirstElement();
text.setText(cie.getInfo());
}
}
});
}
public StyledText getText() {
return text;
}
public Table getTable() {
return tableViewer.getTable();
}
public void setCryptoInfo(CryptoInfo ci) {
tableViewer.setInput(ci);
getTable().getColumn(0).pack();
getTable().pack();
}
private static class CryptoContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
if (inputElement instanceof CryptoInfo) {
return ((CryptoInfo)inputElement).getCryptoInfo().toArray();
} else {
return new Object[]{};
}
}
public void dispose() {}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
}
}