/*******************************************************************************
* Copyright (c) 2006-2011, G. Weirich and Elexis
* 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:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.omnivore.dialog;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
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.Text;
import ch.elexis.admin.AccessControlDefaults;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.ui.Hub;
import ch.elexis.core.ui.icons.Images;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.omnivore.data.DocHandle;
import ch.elexis.omnivore.data.Preferences;
import ch.rgw.tools.TimeTool;
import com.tiff.common.ui.datepicker.DatePickerCombo;
public class FileImportDialog extends TitleAreaDialog {
String file;
DocHandle dh;
DatePickerCombo saveDatePicker;
DatePickerCombo originDatePicker;
Text tTitle;
Text tKeywords;
Combo cbCategories;
public Date saveDate;
public Date originDate;
public String title;
public String keywords;
public String category;
public String preSelectedCategory;
public FileImportDialog(DocHandle dh){
super(Hub.plugin.getWorkbench().getActiveWorkbenchWindow().getShell());
this.dh = dh;
file = dh.get("Titel");
}
/**
* @wbp.parser.constructor
*/
public FileImportDialog(String name){
super(Hub.plugin.getWorkbench().getActiveWorkbenchWindow().getShell());
file = name;
}
public FileImportDialog(String name, String preSelectedCategory){
super(Hub.plugin.getWorkbench().getActiveWorkbenchWindow().getShell());
file = name;
this.preSelectedCategory = preSelectedCategory;
}
@Override
protected Control createDialogArea(Composite parent){
Composite ret = new Composite(parent, SWT.NONE);
ret.setLayout(new GridLayout());
ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
if (Preferences.getDateModifiable()) {
Composite dateComposite = new Composite(ret, SWT.NONE);
dateComposite.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
dateComposite.setLayout(new RowLayout(SWT.HORIZONTAL));
new Label(dateComposite, SWT.None).setText(Messages.OmnivoreView_dateSavedColumn);
saveDatePicker = new DatePickerCombo(dateComposite, SWT.NONE);
if (dh == null) {
saveDatePicker.setDate(new Date());
} else {
saveDatePicker.setDate(new TimeTool(dh.getDate()).getTime());
}
new Label(dateComposite, SWT.None).setText(Messages.OmnivoreView_dateOriginColumn);
originDatePicker = new DatePickerCombo(dateComposite, SWT.NONE);
if (dh == null) {
originDatePicker.setDate(new Date());
} else {
originDatePicker.setDate(new TimeTool(dh.getCreationDate()).getTime());
}
}
new Label(ret, SWT.None).setText("Kategorie");
Composite cCats = new Composite(ret, SWT.NONE);
cCats.setFocus();
cCats.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
cCats.setLayout(new RowLayout(SWT.HORIZONTAL));
cbCategories = new Combo(cCats, SWT.SINGLE | SWT.DROP_DOWN | SWT.READ_ONLY);
RowData rd = new RowData(200, SWT.DEFAULT);
cbCategories.setLayoutData(rd);
Button bNewCat = new Button(cCats, SWT.PUSH);
bNewCat.setImage(Images.IMG_NEW.getImage());
bNewCat.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
InputDialog id = new InputDialog(getShell(), "Neue Kategorie",
"Geben Sie bitte einen Namen für die neue Kategorie ein", null, null);
if (id.open() == Dialog.OK) {
DocHandle.addMainCategory(id.getValue());
cbCategories.add(id.getValue());
cbCategories.setText(id.getValue());
}
}
});
Button bEditCat = new Button(cCats, SWT.PUSH);
bEditCat.setImage(Images.IMG_EDIT.getImage());
bEditCat.setToolTipText("Kategorie umbenennen");
bEditCat.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e){
String old = cbCategories.getText();
InputDialog id = new InputDialog(getShell(),
MessageFormat.format("Kategorie '{0}' umbenennen.", old),
"Geben Sie bitte einen neuen Namen für die Kategorie ein", old, null);
if (id.open() == Dialog.OK) {
String nn = id.getValue();
DocHandle.renameCategory(old, nn);
cbCategories.remove(old);
cbCategories.add(nn);
}
}
});
Button bDeleteCat = new Button(cCats, SWT.PUSH);
bDeleteCat.setImage(Images.IMG_DELETE.getImage());
bDeleteCat.setToolTipText("Kategorie löschen");
bDeleteCat.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent ev){
String old = cbCategories.getText();
InputDialog id =
new InputDialog(getShell(), MessageFormat.format("Kategorie {0} löschen", old),
"Geben Sie bitte an, in welche andere Kategorie die Dokumente dieser Kategorie verschoben werden sollen",
"", null);
if (id.open() == Dialog.OK) {
DocHandle.removeCategory(old, id.getValue());
cbCategories.remove(id.getValue());
}
}
});
List<String> cats = DocHandle.getMainCategoryNames();
if (cats.size() > 0) {
Collections.sort(cats);
cbCategories.setItems(cats.toArray(new String[0]));
cbCategories.select(0);
}
new Label(ret, SWT.NONE).setText("Titel");
tTitle = SWTHelper.createText(ret, 1, SWT.NONE);
new Label(ret, SWT.NONE).setText("Stichwörter");
tKeywords = SWTHelper.createText(ret, 4, SWT.NONE);
tTitle.setText(file);
if (dh != null) {
tKeywords.setText(dh.get("Keywords"));
cbCategories.setText(dh.getCategoryName());
}
bEditCat.setEnabled(CoreHub.acl.request(AccessControlDefaults.DOCUMENT_CATDELETE));
bDeleteCat.setEnabled(CoreHub.acl.request(AccessControlDefaults.DOCUMENT_CATDELETE));
bNewCat.setEnabled(CoreHub.acl.request(AccessControlDefaults.DOCUMENT_CATCREATE));
return ret;
}
@Override
public void create(){
super.create();
setTitle(file);
getShell().setText("Datei importieren");
setMessage(
"Geben Sie bitte einen Titel und ggf. einige Stichwörter für dieses Dokument ein");
}
@Override
protected void okPressed(){
setDateValues();
keywords = tKeywords.getText();
title = tTitle.getText();
category = cbCategories.getText();
if (dh != null) {
dh.setDate(saveDate);
dh.setCreationDate(originDate);
dh.set(new String[] {
DocHandle.FLD_CAT, DocHandle.FLD_TITLE, DocHandle.FLD_KEYWORDS
}, category, title, keywords);
}
super.okPressed();
}
private void setDateValues(){
if (saveDatePicker != null) {
saveDate = saveDatePicker.getDate();
}
if (originDatePicker != null) {
originDate = originDatePicker.getDate();
}
if (saveDate == null && originDate != null) {
saveDate = originDate;
} else if (originDate == null && saveDate != null) {
originDate = saveDate;
} else if (saveDate == null && originDate == null) {
saveDate = new Date();
originDate = new Date();
}
}
}