package org.thanlwinsoft.languagetest.eclipse.print; import java.util.LinkedHashMap; import java.util.Map; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; 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.Shell; import org.thanlwinsoft.languagetest.MessageUtil; import org.thanlwinsoft.languagetest.eclipse.LanguageTestPlugin; import org.thanlwinsoft.languagetest.language.test.UniversalLanguage; import org.thanlwinsoft.schemas.languagetest.module.LangType; import org.thanlwinsoft.schemas.languagetest.module.LangTypeType; public class LanguagePairDialog extends MessageDialog { Map<String,LangType> nativeLang; Map<String,LangType> foreignLang; Combo nativeCombo = null; Combo foreignCombo = null; String nativeId = null; String foreignId = null; static final String[] dialogButtonLabels = new String[] { MessageUtil.getString("OK"), MessageUtil.getString("Cancel") }; public LanguagePairDialog(Shell parentShell, LangType [] langs) { super(parentShell, MessageUtil.getString("ChooseLanguages"), LanguageTestPlugin.getImageDescriptor("/icons/FlagOutline32.png").createImage(parentShell.getDisplay()), MessageUtil.getString("ChooseLanguagesMsg"), MessageDialog.QUESTION, dialogButtonLabels, 0); nativeLang = new LinkedHashMap<String,LangType>(); foreignLang = new LinkedHashMap<String,LangType>(); for (LangType l : langs) { UniversalLanguage ul = new UniversalLanguage(l.getLang()); if (l.getType().equals(LangTypeType.NATIVE)) { nativeLang.put(ul.getDescription(), (LangType)l.copy()); } if (l.getType().equals(LangTypeType.FOREIGN)) { foreignLang.put(ul.getDescription(), (LangType)l.copy()); } } } @Override protected Control createCustomArea(Composite parent) { Composite panel = new Composite(parent, SWT.NONE); panel.setLayout(new GridLayout()); nativeCombo = new Combo(panel, SWT.DROP_DOWN); nativeCombo.setItems(nativeLang.keySet().toArray(new String[nativeLang.size()])); foreignCombo = new Combo(panel, SWT.DROP_DOWN); foreignCombo.setItems(foreignLang.keySet().toArray(new String[foreignLang.size()])); nativeCombo.select(0); if (nativeLang.size() == 1) { nativeCombo.setEnabled(false); } nativeCombo.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } @Override public void widgetSelected(SelectionEvent e) { nativeId = nativeCombo.getItem(nativeCombo.getSelectionIndex()); }}); foreignCombo.select(0); if (foreignLang.size() == 1) { foreignCombo.setEnabled(false); } foreignCombo.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } @Override public void widgetSelected(SelectionEvent e) { foreignId = foreignCombo.getItem(foreignCombo.getSelectionIndex()); }}); nativeId = nativeLang.keySet().iterator().next(); foreignId = foreignLang.keySet().iterator().next(); return panel; } public LangType getNativeLang() { return nativeLang.get(nativeId); } public LangType getForeignLang() { return foreignLang.get(foreignId); } public boolean needDialog() { if (nativeLang.size() > 1 || foreignLang.size() > 1) return true; return false; } }