/*
* � Copyright IBM Corp. 2016
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.xsp.extlib.designer.tooling.palette.calendarview;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import com.ibm.commons.util.StringUtil;
import com.ibm.designer.domino.ide.resources.extensions.util.DesignerDELookup;
import com.ibm.xsp.extlib.designer.tooling.panels.ExtLibPanelUtil;
import com.ibm.xsp.extlib.designer.tooling.utils.AbstractWizardPage;
import com.ibm.xsp.extlib.designer.tooling.utils.WizardUtils;
/**
* @author Gary Marjoram
*
*/
public class CvwEventPage extends AbstractWizardPage implements SelectionListener {
private static String _DELETE_CONFIRM_MSG = "Delete this calendar entry?"; // $NLX-CvwEventPage.Deletethiscalendarentry-1$
private Button _newCheckbox;
private Label _newLabel;
private Combo _newCombo;
private Button _openCheckbox;
private Label _openLabel;
private Combo _openCombo;
private Button _delCheckbox;
private Label _delLabel;
private Text _delEdit;
private Button _reschedCheckbox;
private Label _reschedLabel;
private Combo _reschedCombo;
protected CvwEventPage(String pageName) {
super(pageName);
}
@Override
protected String getPageTitle() {
return "Calendar Events"; // $NLX-CvwEventPage.CalendarEvents-1$
}
@Override
protected String getPageMsg() {
return "Configure the events for this calendar"; // $NLX-CvwEventPage.Configuretheeventsforthiscalendar-1$
}
@Override
public void createControl(Composite parent) {
super.createControl(parent);
String[] xpages = getXPages();
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(WizardUtils.createGridLayout(2, 5));
_newCheckbox = WizardUtils.createCheckBox(container, "New entry", 2, true); // $NLX-CvwEventPage.Newentry-1$
_newCheckbox.addSelectionListener(this);
_newLabel = WizardUtils.createLabel(container, "Target XPage: ", 1, 20, false, GridData.HORIZONTAL_ALIGN_BEGINNING); // $NLX-CvwEventPage.TargetXPage-1$
_newCombo = WizardUtils.createEditCombo(container, 1, xpages, -1, null);
_openCheckbox = WizardUtils.createCheckBox(container, "Open entry", 2, true); // $NLX-CvwEventPage.Openentry-1$
_openCheckbox.addSelectionListener(this);
_openLabel = WizardUtils.createLabel(container, "Target XPage: ", 1, 20, false, GridData.HORIZONTAL_ALIGN_BEGINNING); // $NLX-CvwEventPage.TargetXPage-1$
_openCombo = WizardUtils.createEditCombo(container, 1, xpages, -1, null);
_delCheckbox = WizardUtils.createCheckBox(container, "Delete entry", 2, true); // $NLX-CvwEventPage.Deleteentry-1$
_delCheckbox.addSelectionListener(this);
_delLabel = WizardUtils.createLabel(container, "Confirmation message: ", 1, 20, false, GridData.HORIZONTAL_ALIGN_BEGINNING); // $NLX-CvwEventPage.Confirmationmessage-1$
_delEdit = WizardUtils.createText(container, _DELETE_CONFIRM_MSG);
_reschedCheckbox = WizardUtils.createCheckBox(container, "Reschedule entry", 2, true); // $NLX-CvwEventPage.Rescheduleentry-1$
_reschedCheckbox.addSelectionListener(this);
_reschedLabel = WizardUtils.createLabel(container, "Target XPage: ", 1, 20, false, GridData.HORIZONTAL_ALIGN_BEGINNING); // $NLX-CvwEventPage.TargetXPage-1$
_reschedCombo = WizardUtils.createEditCombo(container, 1, xpages, -1, null);
setControl(container);
setPageComplete(true);
}
@Override
public void widgetDefaultSelected(SelectionEvent event) {
}
@Override
public void widgetSelected(SelectionEvent event) {
if (event.widget == _newCheckbox) {
_newLabel.setEnabled(_newCheckbox.getSelection());
_newCombo.setEnabled(_newCheckbox.getSelection());
} else if (event.widget == _openCheckbox) {
_openLabel.setEnabled(_openCheckbox.getSelection());
_openCombo.setEnabled(_openCheckbox.getSelection());
} else if (event.widget == _delCheckbox) {
_delLabel.setEnabled(_delCheckbox.getSelection());
_delEdit.setEnabled(_delCheckbox.getSelection());
} else if (event.widget == _reschedCheckbox) {
_reschedLabel.setEnabled(_reschedCheckbox.getSelection());
_reschedCombo.setEnabled(_reschedCheckbox.getSelection());
}
getWizard().getContainer().updateButtons();
}
public boolean addOpenEvent() {
return WizardUtils.getCheckBoxValue(_openCheckbox, true);
}
public String getOpenEventXPage() {
return addExtension(WizardUtils.getComboText(_openCombo, ""));
}
public boolean addReschedEvent() {
return WizardUtils.getCheckBoxValue(_reschedCheckbox, true);
}
public String getReschedEventXPage() {
return addExtension(WizardUtils.getComboText(_reschedCombo, ""));
}
public boolean addDeleteEvent() {
return WizardUtils.getCheckBoxValue(_delCheckbox, true);
}
public String getDeleteEventConfirmMsg() {
return WizardUtils.getTextValue(_delEdit, _DELETE_CONFIRM_MSG);
}
public boolean addNewEvent() {
return WizardUtils.getCheckBoxValue(_newCheckbox, true);
}
public String getNewEventXPage() {
return addExtension(WizardUtils.getComboText(_newCombo, ""));
}
public String addExtension(String xpage) {
xpage = xpage.trim();
if (StringUtil.isNotEmpty(xpage)) {
if (!xpage.toLowerCase().endsWith(".xsp")) { // $NON-NLS-1$
xpage += ".xsp"; // $NON-NLS-1$
}
} else {
// Nothing chosen - use the current XPage
xpage = ExtLibPanelUtil.getActiveEditor().getEditorInput().getName();
}
return xpage;
}
public String[] getXPages() {
DesignerDELookup xl = DesignerDELookup.getXPagesLookup(((CalendarViewDropWizard)_wiz).getPanelData().getDesignerProject());
String[] result = new String[xl.size()];
for (int i=0; i< xl.size(); i++) {
result[i] = xl.getLabel(i);
}
return result;
}
}