package org.alcatel.jsce.servicecreation.ui;
import java.util.Iterator;
import java.util.List;
import org.alcatel.jsce.statevent.EventCatalog;
import org.alcatel.jsce.statevent.EventStatParser;
import org.alcatel.jsce.statevent.StatEvent;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.PlatformUI;
import org.mobicents.eclipslee.servicecreation.ServiceCreationPlugin;
public class StatEventViewWidget extends Composite {
private Group tableGroup = null;
private Table statTable = null;
private boolean editable = false;
private List events = null;
private EventCatalog catalog = null;
/**
* @param parent
* @param style the SWT style
* @param editable defines whether the table is editable or not
* @param catalog the stat event catalog containing the event
*/
public StatEventViewWidget(Composite parent, int style, List events, boolean editable, EventCatalog catalog) {
super(parent, style);
this.editable = editable;
this.events = events;
this.catalog = catalog;
initialize();
loadStats(events);
}
/**
* Load the alarms list in the table.
* @param alarms the list of alarms to load.
*/
public void loadStats(List events) {
statTable.removeAll();
this.events = events;
for (Iterator iter = events.iterator(); iter.hasNext();) {
StatEvent event_i = (StatEvent) iter.next();
TableItem item_i = new TableItem(statTable, SWT.NULL);
String value =( new Integer (event_i.getValue())).toString();
item_i.setText(new String[] { event_i.getName(), event_i.getParent(), value, event_i.getInc_type(), event_i.getDump_ind(), event_i.getDescription(), event_i.getSmp_inc_type(), event_i.getMacro()});
}
}
private void initialize() {
createTableGroup();
setSize(new org.eclipse.swt.graphics.Point(622,325));
}
/**
* This method initializes tableGroup
*
*/
private void createTableGroup() {
tableGroup = new Group(this, SWT.NONE);
tableGroup.setText("Stat Event description");
createStatTable();
tableGroup.setBounds(new org.eclipse.swt.graphics.Rectangle(15,12,588,296));
}
/**
* This method initializes statTable
*
*/
private void createStatTable() {
statTable = new Table(tableGroup, SWT.NONE);
statTable.setHeaderVisible(true);
statTable.setLinesVisible(true);
statTable.setBounds(new org.eclipse.swt.graphics.Rectangle(12,15,560,255));
TableColumn nameColumn = new TableColumn(statTable, SWT.NONE);
nameColumn.setWidth(90);
nameColumn.setText("Name");
TableColumn levelColumn = new TableColumn(statTable, SWT.NONE);
levelColumn.setWidth(50);
levelColumn.setText("Parent");
TableColumn problemColumn = new TableColumn(statTable, SWT.NONE);
problemColumn.setWidth(40);
problemColumn.setText("Value");
TableColumn typeColumn = new TableColumn(statTable, SWT.NONE);
typeColumn.setWidth(60);
typeColumn.setText("INCTYPE");
TableColumn causeColumn = new TableColumn(statTable, SWT.NONE);
causeColumn.setWidth(60);
causeColumn.setText("DUMPID");
TableColumn effecttableColumn = new TableColumn(statTable, SWT.NONE);
effecttableColumn.setWidth(100);
effecttableColumn.setText("Description");
TableColumn actionColumn = new TableColumn(statTable, SWT.NONE);
actionColumn.setWidth(80);
actionColumn.setText("SMPINCTYPE");
TableColumn numberColumn = new TableColumn(statTable, SWT.NONE);
numberColumn.setWidth(90);
numberColumn.setText("Display Name");
/*Contextual menu*/
if(editable){
Menu tableMenu = new Menu(statTable);
MenuItem item = new MenuItem(tableMenu, SWT.NONE);
item.setText("Remove stat");
item.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
int selection = statTable.getSelectionIndex();
if(selection > -1){
/*1. get the StatEvent*/
StatEvent eventSelected = (StatEvent) events.get(selection);
if(MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Alcatel SCE", "Are you sure you want delete "+eventSelected.getName()+ " ?" )){
/*2. Remove the event from the list of events*/
events.remove(eventSelected);
/*3. Remove the event form the xml tree of the catalog*/
EventStatParser.removeStatEvent(eventSelected,catalog);
/*4. Re-write the new XML tree in an xml file*/
ServiceCreationPlugin.getDefault().getMainControl().createStatEventCatalog(catalog);
/*5. Re-load the alarm list*/
loadStats(catalog.getAllStatEvent());
}
}
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
MenuItem itemEdit = new MenuItem(tableMenu, SWT.NONE);
itemEdit.setText("Edit stat");
itemEdit.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
int selection = statTable.getSelectionIndex();
if(selection > -1){
/*1. get the alarm*/
StatEvent eventSelected = (StatEvent) events.get(selection);
/*2. Open the edit window*/
EditStatEventDialog dialog = new EditStatEventDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), eventSelected, events,catalog, false );
if(dialog.open() == Window.OK){
//The flie has been modified and we must reload the list
loadStats(events);
}
}
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
statTable.setMenu(tableMenu);
}
}
public EventCatalog getCatalog() {
return catalog;
}
public void setCatalog(EventCatalog catalog) {
this.catalog = catalog;
}
} // @jve:decl-index=0:visual-constraint="10,10"