/*******************************************************************************
* Copyright (c) 2016 ARM Ltd. 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:
* ARM Ltd and ARM Germany GmbH - Initial API and implementation
*******************************************************************************/
package com.arm.cmsis.pack.ui.preferences;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import com.arm.cmsis.pack.common.CmsisConstants;
import com.arm.cmsis.pack.repository.CpRepositoryList;
import com.arm.cmsis.pack.ui.CpStringsUI;
/**
* The new repository dialog
*/
public class NewRepoDialog extends Dialog {
private boolean fIsEdit;
private String[] fData;
// Directly refer the types defined in Repos.
private String[] fTypeSelections = CpRepositoryList.TYPES;
Combo fTypeCombo;
Text fNameText;
Text fUrlText;
String fReturnType;
String fReturnName;
String fReturnUrl;
protected NewRepoDialog(Shell parentShell, String[] data) {
super(parentShell);
fIsEdit = (data != null);
fData = data;
}
@Override
protected boolean isResizable() {
return true;
}
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
String title;
if (fIsEdit) {
title = CpStringsUI.NewRepoDialog_EditPackRepoTitle;
} else {
title = CpStringsUI.NewRepoDialog_NewPackRepoTitle;
}
if (title != null) {
shell.setText(title);
}
}
protected String[] getData() {
return new String[] { fReturnType, fReturnName, fReturnUrl };
}
@Override
protected Control createDialogArea(Composite parent) {
Composite comp = new Composite(parent, SWT.NULL);
comp.setFont(parent.getFont());
GridLayout layout;
layout = new GridLayout();
layout.numColumns = 2;
layout.marginTop = 10;
layout.marginBottom = 10;
layout.marginWidth = 10;
comp.setLayout(layout);
GridData layoutData = new GridData();
layoutData.widthHint = 400;
layoutData.verticalAlignment = SWT.FILL;
layoutData.horizontalAlignment = SWT.FILL;
layoutData.grabExcessHorizontalSpace = true;
comp.setLayoutData(layoutData);
{
Label typeLabel = new Label(comp, SWT.LEFT);
// typeLabel.setFont(comp.getFont());
typeLabel.setText(CpStringsUI.NewRepoDialog_TypeLabel);
layoutData = new GridData();
typeLabel.setLayoutData(layoutData);
fTypeCombo = new Combo(comp, SWT.READ_ONLY);
fTypeCombo.setItems(fTypeSelections);
int ix = 0;
if (fIsEdit) {
for (int i = 0; i < fTypeSelections.length; ++i) {
if (fData[0].equals(fTypeSelections[i])) {
ix = i;
break;
}
}
}
fTypeCombo.select(ix);
fReturnType = fTypeSelections[ix];
layoutData = new GridData();
fTypeCombo.setLayoutData(layoutData);
}
{
Label nameLabel = new Label(comp, SWT.LEFT);
// typeLabel.setFont(comp.getFont());
nameLabel.setText(CpStringsUI.NewRepoDialog_NameLabel);
layoutData = new GridData();
nameLabel.setLayoutData(layoutData);
fNameText = new Text(comp, SWT.SINGLE | SWT.BORDER);
if (fIsEdit) {
fNameText.setText(fData[1]);
} else {
fNameText.setText(CmsisConstants.EMPTY_STRING);
}
fReturnName = fNameText.getText();
layoutData = new GridData();
layoutData.horizontalAlignment = SWT.FILL;
layoutData.grabExcessHorizontalSpace = true;
fNameText.setLayoutData(layoutData);
}
{
Label urlLabel = new Label(comp, SWT.LEFT);
// typeLabel.setFont(comp.getFont());
urlLabel.setText(CpStringsUI.NewRepoDialog_UrlLabel);
layoutData = new GridData();
urlLabel.setLayoutData(layoutData);
fUrlText = new Text(comp, SWT.SINGLE | SWT.BORDER);
if (fIsEdit) {
fUrlText.setText(fData[2]);
} else {
fUrlText.setText(CmsisConstants.EMPTY_STRING);
}
fReturnUrl = fUrlText.getText();
layoutData = new GridData();
layoutData.horizontalAlignment = SWT.FILL;
layoutData.grabExcessHorizontalSpace = true;
fUrlText.setLayoutData(layoutData);
}
fTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
fReturnType = fTypeCombo.getText();
}
});
fNameText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
fReturnName = fNameText.getText();
}
});
fUrlText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
fReturnUrl = fUrlText.getText();
}
});
return comp;
}
}