/******************************************************************************* * Copyright (c) 2010 - 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770 *******************************************************************************/ package alma.acs.alarmsystemprofiler.parts; import javax.annotation.PostConstruct; import javax.inject.Inject; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import alma.acs.alarmsystemprofiler.document.MostFrequantAlarmsContainer; import alma.acs.alarmsystemprofiler.document.MostFrequantAlarmsContainer.AlarmActNumber; import alma.acs.alarmsystemprofiler.parts.TableViewBase; public class MostFrequentAlarmPart extends TableViewBase { /** * The label provider * * @author acaproni * */ private class AlarmLabelProvider extends LabelProvider implements ITableLabelProvider { /** * No image */ @Override public Image getColumnImage(Object element, int columnIndex) { return null; } /** * Extract the text from the object */ @Override public String getColumnText(Object element, int columnIndex) { if (element==null) { return "N/A"; } AlarmActNumber item=(AlarmActNumber)element; switch (columnIndex) { case 0: return item.getAlarmID(); case 1: return ""+item.getNumActivation(); case 2: if (item.getLastActivationTime()==null){ return ""; } else { return ""+item.getLastActivationTime(); } case 3: return ""+item.getNumTermination(); case 4: if (item.getLastTerminationTime()==null) { return ""; } else { return ""+item.getLastTerminationTime(); } default: return "Unknown!"; } } }; /** * A class to sort the table by ascending/descending order of a column * * @author acaproni * */ public class TableSorter extends TableSorterBase { /** * Constructor * * @param colIndex The index of the column to sort * @param order The order ascending/descending */ public TableSorter(int colIndex, int order) { super(colIndex,order); } @Override public int compare(Viewer viewer, Object e1, Object e2) { AlarmActNumber a1 = (AlarmActNumber) e1; AlarmActNumber a2 = (AlarmActNumber) e2; int ret = 0; switch (colIndex) { case 0: ret = a1.getAlarmID().compareTo(a2.getAlarmID()); break; case 1: ret = (int)a1.getNumActivation()-(int)a2.getNumActivation(); break; case 2: if (a1.getLastActivationTime()==null) { ret=-1; } else if (a2.getLastActivationTime()==null) { ret=+1; } else { ret = a1.getLastActivationTime().compareTo(a2.getLastActivationTime()); } break; case 3: ret=(int)a1.getNumTermination()-(int)a2.getNumTermination(); break; case 4: if (a1.getLastTerminationTime()==null) { ret =-1; } else if (a2.getLastTerminationTime()==null) { ret=+1; } else { ret=a1.getLastTerminationTime().compareTo(a2.getLastTerminationTime()); } break; default: ret = 0; } // If descending order, flip the direction if (order == DESCENDING) { ret = -ret; } return ret; } } public MostFrequentAlarmPart() { super(MostFrequantAlarmsContainer.getInstance().colNames,new int[] { 250, 100, 150, 100, 150 }); sorter=new TableSorter(0, TableSorter.DESCENDING); } @PostConstruct public void postConstruct(Composite parent) { super.createPartControl(parent); tableViewer.setLabelProvider(new AlarmLabelProvider()); tableViewer.setSorter(sorter); MostFrequantAlarmsContainer.getInstance().setTableViewer(tableViewer); tableViewer.setInput(MostFrequantAlarmsContainer.getInstance()); // /*parent.setLayout(new GridLayout(1, false)); // // tableViewer.setLabelProvider(new AlarmLabelProvider()); // sorter=new TableSorter(0, TableSorter.DESCENDING); // tableViewer.setSorter(sorter); // MostFrequantAlarmsContainer.getInstance().setTableViewer(tableViewer); // tableViewer.setInput(MostFrequantAlarmsContainer.getInstance()); // // tableViewer = new TableViewer(parent); // // tableViewer.add("Sample item 1"); // tableViewer.add("Sample item 2"); // tableViewer.add("Sample item 3"); // tableViewer.add("Sample item 4"); // tableViewer.add("Sample item 5"); // tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));*/ } }