package org.nightlabs.jfire.asterisk.ui.asteriskserver;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.composite.XComposite.LayoutDataMode;
import org.nightlabs.base.ui.composite.XComposite.LayoutMode;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.base.ui.util.RCPUtil;
import org.nightlabs.base.ui.wizard.WizardHopPage;
import org.nightlabs.jfire.asterisk.AsteriskServer;
import org.nightlabs.jfire.asterisk.ui.AddCallFilePropertyDialog;
import org.nightlabs.jfire.asterisk.ui.resource.Messages;
/**
* @author Chairat Kongarayawetchakun - chairat[at]nightlabs[dot]de
*/
public class CreateAsteriskServerCallFilePropertyWizardPage
extends WizardHopPage
{
private AsteriskServer asteriskServer;
public CreateAsteriskServerCallFilePropertyWizardPage(AsteriskServer asteriskServer) {
super(CreateAsteriskServerCallFilePropertyWizardPage.class.getName(), Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerCallFilePropertyWizardPage.pageTitle")); //$NON-NLS-1$
this.asteriskServer = asteriskServer;
setDescription(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerCallFilePropertyWizardPage.description")); //$NON-NLS-1$
}
private CallFilePropertyTable callFilePropertyTable;
@Override
public Control createPageContents(Composite parent) {
XComposite mainComposite = new XComposite(parent, SWT.NONE, LayoutMode.TIGHT_WRAPPER, LayoutDataMode.GRID_DATA);
mainComposite.getGridLayout().numColumns = 2;
callFilePropertyTable = new CallFilePropertyTable(mainComposite);
callFilePropertyTable.setLayoutData(new GridData(GridData.FILL_BOTH));
XComposite buttonComposite = new XComposite(mainComposite, SWT.NONE, LayoutMode.TIGHT_WRAPPER);
Button addButton = new Button(buttonComposite, SWT.PUSH);
addButton.setText(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerCallFilePropertyWizardPage.addButtonText")); //$NON-NLS-1$
addButton.setImage(SharedImages.ADD_16x16.createImage());
addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
addButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event)
{
AddCallFilePropertyDialog addDialog = new AddCallFilePropertyDialog(getShell());
int returnCode = addDialog.open();
if (returnCode == Dialog.OK) {
asteriskServer.setCallFileProperty(addDialog.getKey(), addDialog.getValue());
callFilePropertyTable.refresh();
}
}
});
Button removeButton = new Button(buttonComposite, SWT.PUSH);
removeButton.setText(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerCallFilePropertyWizardPage.removeButtonText")); //$NON-NLS-1$
removeButton.setImage(SharedImages.DELETE_16x16.createImage());
removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
removeButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
Set<String> keysToDelete = new HashSet<String>();
for (Map.Entry<String, String> me : callFilePropertyTable.getSelectedElements())
keysToDelete.add(me.getKey());
if (keysToDelete.isEmpty())
return;
for (String key : keysToDelete)
asteriskServer.setCallFileProperty(key, null);
callFilePropertyTable.refresh();
}
});
buttonComposite.setLayoutData(new GridData());
callFilePropertyTable.setInput(asteriskServer);
return mainComposite;
}
@Override
public boolean isPageComplete() {
return getErrorMessage() == null;
}
}