public class View extends ViewPart { public static final String ID = "simpleExplorer.view"; private TableViewer viewer; private TblRowFilter filter; private TableSorter tableSorter; private Query myProcStock; private ModelProvider modelProvider; private Integer instanceNum = 0; private Boolean alReady = false; /** * Méthode permettant de définir le contenu de la vue */ public void createPartControl(final Composite parent) { /* à enlever car pas propre*/ myProcStock = new ProcStock("dbo.rep_getSwiftPendingAcknowledgement"); modelProvider = new ModelProvider(myProcStock); if(alReady == false ){ viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); createTableViewer(parent, viewer, modelProvider); } this.getSite().getWorkbenchWindow().getSelectionService().addSelectionListener("simpleExplorer.navigationview", new ISelectionListener(){ public void selectionChanged(IWorkbenchPart part, ISelection selection) { alReady = true; if (selection == null) { return; } if (selection instanceof IStructuredSelection) { IStructuredSelection ss = (IStructuredSelection)selection; if (ss.getFirstElement() != null){ //if the selection is != of null if (ss.getFirstElement().getClass() == SubModule.class) { myProcStock = new ProcStock(((SubModule) ss.getFirstElement()).getQuery().getName()); modelProvider = new ModelProvider(myProcStock); try { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(View.ID, Integer.toString(instanceNum++), IWorkbenchPage.VIEW_ACTIVATE); } catch (PartInitException e) { e.printStackTrace(); } createTableViewer(parent, viewer, modelProvider); } else{ MessageDialog.openInformation(getSite().getShell(),"Ouverture","Veuillez ouvrir le fichier"); } } } } }); } /** * * @param parent * @param viewer * @param modelProvider * @return */ private TableViewer createTableViewer(final Composite parent, TableViewer viewer, final ModelProvider modelProvider){ // création des colonnes de la table createColumns(viewer, modelProvider.getHearders(), modelProvider.getTypes()); viewer.setContentProvider(new TblRowContentProvider()); viewer.setLabelProvider(new TblRowLabelProvider()); // On récupère le content de la vue, la méthode setInput appelera getElements // dans le contentProvider viewer.setInput(modelProvider.getTblRows()); // On active la sélection getSite().setSelectionProvider(viewer); // On active le Sorter sur notre table tableSorter = new TableSorter(); viewer.setSorter(tableSorter); filter = new TblRowFilter(); viewer.addFilter(filter); // Layout the viewer GridData gridData = new GridData(); gridData.verticalAlignment = GridData.FILL; gridData.horizontalSpan = 2; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; gridData.horizontalAlignment = GridData.FILL; viewer.getControl().setLayoutData(gridData); return viewer; } /** * les colonnes sont crées avec des noms vennant de la base de données * @param viewer */ private void createColumns(final TableViewer viewer, String[] headers, String[] types) { Table table = viewer.getTable(); // initialisation des bounds : leur taille devra à terme être gérée dynamiquement int[] bounds = new int [headers.length]; for (int i=0; i