/**
* This file is part of Archiv-Editor.
*
* The software Archiv-Editor serves as a client user interface for working with
* the Person Data Repository. See: pdr.bbaw.de
*
* The software Archiv-Editor was developed at the Berlin-Brandenburg Academy
* of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin.
* www.bbaw.de
*
* Copyright (C) 2010-2013 Berlin-Brandenburg Academy
* of Sciences and Humanities
*
* The software Archiv-Editor was developed by @author: Christoph Plutte.
*
* Archiv-Editor is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Archiv-Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Archiv-Editor.
* If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
*/
package org.bbaw.pdr.ae.view.control.customSWTWidges;
import java.util.ArrayList;
import java.util.Observer;
import java.util.Vector;
import org.bbaw.pdr.ae.common.CommonActivator;
import org.bbaw.pdr.ae.common.NLMessages;
import org.bbaw.pdr.ae.common.icons.IconsInternal;
import org.bbaw.pdr.ae.metamodel.PdrDate;
import org.bbaw.pdr.ae.model.AccessCondition;
import org.bbaw.pdr.ae.model.DetailMods;
import org.bbaw.pdr.ae.model.ExtendMods;
import org.bbaw.pdr.ae.model.IdentifierMods;
import org.bbaw.pdr.ae.model.LocationMods;
import org.bbaw.pdr.ae.model.NameMods;
import org.bbaw.pdr.ae.model.Note;
import org.bbaw.pdr.ae.model.OriginInfo;
import org.bbaw.pdr.ae.model.PartMods;
import org.bbaw.pdr.ae.model.ReferenceMods;
import org.bbaw.pdr.ae.model.RelatedItem;
import org.bbaw.pdr.ae.model.RoleMods;
import org.bbaw.pdr.ae.model.TimeSpan;
import org.bbaw.pdr.ae.model.TitleInfo;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.Policy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
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.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
/**
* The Class ReferenceEditorAddFieldToolTip.
* @author Christoph Plutte
*/
public class ReferenceEditorAddFieldToolTip extends CustomTooltip
{
/** The observers. */
private ArrayList<Observer> _observers = new ArrayList<Observer>();
/** The parent shell. */
private Shell _parentShell;
/** The add button comp. */
private Composite _addButtonComp;
/** The main comp. */
private Composite _mainComp;
/** The tool tip text. */
private String _toolTipText;
/** The link. */
private Link _link;
/** The image reg. */
private ImageRegistry _imageReg = CommonActivator.getDefault().getImageRegistry();
/** The header text. */
private String _headerText = "Markup Information";
/** The Constant HEADER_BG_COLOR. */
public static final String HEADER_BG_COLOR = Policy.JFACE + ".TOOLTIP_HEAD_BG_COLOR";
/** The Constant HEADER_FG_COLOR. */
public static final String HEADER_FG_COLOR = Policy.JFACE + ".TOOLTIP_HEAD_FG_COLOR";
/** The Constant HEADER_FONT. */
public static final String HEADER_FONT = Policy.JFACE + ".TOOLTIP_HEAD_FONT";
/** The Constant HEADER_CLOSE_ICON. */
public static final String HEADER_CLOSE_ICON = Policy.JFACE + ".TOOLTIP_CLOSE_ICON";
/** The Constant HEADER_HELP_ICON. */
public static final String HEADER_HELP_ICON = Policy.JFACE + ".TOOLTIP_HELP_ICON";
/** The _current reference. */
private ReferenceMods _currentReference;
/**
* Instantiates a new reference editor add field tool tip.
* @param control the control
* @param reference the reference
*/
public ReferenceEditorAddFieldToolTip(final Control control, final ReferenceMods reference)
{
super(control);
this._currentReference = reference;
this._parentShell = control.getShell();
}
/**
* Adds the observer.
* @param o the o
*/
public final void addObserver(final Observer o)
{
_observers.add(o);
}
/**
* Creates the content area.
* @return the composite
*/
protected final Composite createContentArea()
{
if (_addButtonComp != null)
{
_addButtonComp.dispose();
}
_addButtonComp = new Composite(_mainComp, SWT.COLOR_INFO_BACKGROUND);
_addButtonComp.setLayoutData(new GridData());
((GridData) _addButtonComp.getLayoutData()).widthHint = 370;
((GridData) _addButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
_addButtonComp.setLayout(new GridLayout());
((GridLayout) _addButtonComp.getLayout()).numColumns = 1;
((GridLayout) _addButtonComp.getLayout()).makeColumnsEqualWidth = false;
loadAddButtons();
return _addButtonComp;
}
@Override
protected final Composite createToolTipContentArea(final Event event, final Composite parent)
{
_mainComp = new Composite(parent, SWT.NONE);
GridLayout gl = new GridLayout(1, false);
gl.marginBottom = 0;
gl.marginTop = 0;
gl.marginHeight = 0;
gl.marginWidth = 0;
gl.marginLeft = 0;
gl.marginRight = 0;
gl.verticalSpacing = 1;
_mainComp.setLayout(gl);
Composite topArea = new Composite(_mainComp, SWT.NONE);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
data.widthHint = 370;
topArea.setLayoutData(data);
topArea.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
gl = new GridLayout(2, false);
gl.marginBottom = 2;
gl.marginTop = 2;
gl.marginHeight = 0;
gl.marginWidth = 0;
gl.marginLeft = 5;
gl.marginRight = 2;
topArea.setLayout(gl);
Label l = new Label(topArea, SWT.NONE);
l.setText(_headerText);
l.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
l.setFont(JFaceResources.getFontRegistry().get(HEADER_FONT));
l.setForeground(JFaceResources.getColorRegistry().get(HEADER_FG_COLOR));
l.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite iconComp = new Composite(topArea, SWT.NONE);
iconComp.setLayoutData(new GridData());
iconComp.setLayout(new GridLayout(2, false));
iconComp.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
gl = new GridLayout(2, false);
gl.marginBottom = 0;
gl.marginTop = 0;
gl.marginHeight = 0;
gl.marginWidth = 0;
gl.marginLeft = 0;
gl.marginRight = 0;
iconComp.setLayout(gl);
Label helpIcon = new Label(iconComp, SWT.NONE);
helpIcon.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
helpIcon.setImage(_imageReg.get(IconsInternal.CANCEL));
helpIcon.addMouseListener(new MouseAdapter()
{
@Override
public void mouseDown(final MouseEvent e)
{
hide();
// openHelp();
}
});
Label closeIcon = new Label(iconComp, SWT.NONE);
closeIcon.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
closeIcon.setImage(JFaceResources.getImage(HEADER_CLOSE_ICON));
closeIcon.addMouseListener(new MouseAdapter()
{
@Override
public void mouseDown(final MouseEvent e)
{
_parentShell.setFocus();
hide();
}
});
createContentArea().setLayoutData(new GridData(GridData.FILL_BOTH));
return _mainComp;
}
/**
* Gets the tool tip text.
* @return the tool tip text
*/
public final String getToolTipText()
{
return _toolTipText;
}
/**
* Load add buttons.
*/
private final void loadAddButtons()
{
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
// if (_currentReference.getNameMods() == null ||
// _currentReference.getNameMods().isEmpty())
// {
final Button addNames = new Button(rowButtonComp, SWT.PUSH);
addNames.setText(NLMessages.getString("Editor_add_names"));
addNames.setToolTipText(NLMessages.getString("Editor_add_names_tooltip"));
addNames.setImage(_imageReg.get(IconsInternal.ADD));
addNames.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getNameMods() == null)
{
_currentReference.setNameMods(new Vector<NameMods>(1));
_currentReference.getNameMods().add(new NameMods(2));
}
else
{
if (!_currentReference.getNameMods().isEmpty()
&& _currentReference.getNameMods().lastElement() != null
&& _currentReference.getNameMods().lastElement().getRoleMods() != null
&& _currentReference.getNameMods().lastElement().getRoleMods().getRoleTerm() != null)
{
NameMods lastn = _currentReference.getNameMods().lastElement();
NameMods newN = new NameMods(2);
newN.setRoleMods(new RoleMods());
newN.getRoleMods().setRoleTerm(new String(lastn.getRoleMods().getRoleTerm()));
_currentReference.getNameMods().add(newN);
}
else
{
_currentReference.getNameMods().add(new NameMods(2));
}
}
notifyObservers();
}
});
// }
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getTitleInfo() == null || _currentReference.getTitleInfo().getTitle() == null)
{
final Button addTitleInfo = new Button(rowButtonComp, SWT.PUSH);
addTitleInfo.setText(NLMessages.getString("Editor_add_title"));
addTitleInfo.setToolTipText(NLMessages.getString("Editor_add_title_tooltip"));
addTitleInfo.setImage(_imageReg.get(IconsInternal.ADD));
addTitleInfo.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getTitleInfo() == null)
{
_currentReference.setTitleInfo(new TitleInfo());
_currentReference.getTitleInfo().setTitle(" "); //$NON-NLS-1$
}
else
{
_currentReference.getTitleInfo().setTitle(" "); //$NON-NLS-1$
}
notifyObservers();
}
});
}
if (_currentReference.getTitleInfo() == null || _currentReference.getTitleInfo().getSubTitle() == null)
{
final Button addExtra = new Button(rowButtonComp, SWT.PUSH);
addExtra.setText(NLMessages.getString("Editor_subtitle")); //$NON-NLS-1$
addExtra.setToolTipText(NLMessages.getString("Editor_add_subtible"));
addExtra.setImage(_imageReg.get(IconsInternal.ADD));
addExtra.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getTitleInfo() == null)
{
_currentReference.setTitleInfo(new TitleInfo());
_currentReference.getTitleInfo().setTitle(" "); //$NON-NLS-1$
}
_currentReference.getTitleInfo().setSubTitle(" "); //$NON-NLS-1$
notifyObservers();
// addExtra.setEnabled(false);
}
});
}
if (_currentReference.getTitleInfo() == null || _currentReference.getTitleInfo().getPartName() == null
|| _currentReference.getTitleInfo().getPartNumber() == null)
{
final Button addExtra2 = new Button(rowButtonComp, SWT.PUSH);
addExtra2.setText(NLMessages.getString("Editor_partName")); //$NON-NLS-1$
addExtra2.setToolTipText(NLMessages.getString("Editor_add_title_extra_tooltip"));
addExtra2.setImage(_imageReg.get(IconsInternal.ADD));
addExtra2.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getTitleInfo() == null)
{
_currentReference.setTitleInfo(new TitleInfo());
_currentReference.getTitleInfo().setTitle(" "); //$NON-NLS-1$
}
_currentReference.getTitleInfo().setPartName(" "); //$NON-NLS-1$
_currentReference.getTitleInfo().setPartNumber(" "); //$NON-NLS-1$
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getSeriesTitleInfo() == null
|| _currentReference.getSeriesTitleInfo().getTitle() == null)
{
final Button addTitleInfo = new Button(rowButtonComp, SWT.PUSH);
addTitleInfo.setText(NLMessages.getString("Editor_add_series"));
addTitleInfo.setImage(_imageReg.get(IconsInternal.ADD));
addTitleInfo.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getSeriesTitleInfo() == null)
{
_currentReference.setSeriesTitleInfo(new TitleInfo());
_currentReference.getSeriesTitleInfo().setTitle(" "); //$NON-NLS-1$
}
else
{
_currentReference.getSeriesTitleInfo().setTitle(" "); //$NON-NLS-1$
}
notifyObservers();
}
});
}
if (_currentReference.getSeriesTitleInfo() == null
|| _currentReference.getSeriesTitleInfo().getSubTitle() == null)
{
final Button addExtra = new Button(rowButtonComp, SWT.PUSH);
addExtra.setText(NLMessages.getString("Editor_add_series") + " " + NLMessages.getString("Editor_subtitle")); //$NON-NLS-1$
addExtra.setImage(_imageReg.get(IconsInternal.ADD));
addExtra.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getSeriesTitleInfo() == null)
{
_currentReference.setSeriesTitleInfo(new TitleInfo());
_currentReference.getSeriesTitleInfo().setTitle(" "); //$NON-NLS-1$
}
_currentReference.getSeriesTitleInfo().setSubTitle(" "); //$NON-NLS-1$
notifyObservers();
// addExtra.setEnabled(false);
}
});
}
if (_currentReference.getSeriesTitleInfo() == null
|| _currentReference.getSeriesTitleInfo().getPartName() == null
|| _currentReference.getSeriesTitleInfo().getPartNumber() == null)
{
final Button addExtra2 = new Button(rowButtonComp, SWT.PUSH);
addExtra2
.setText(NLMessages.getString("Editor_add_series") + " " + NLMessages.getString("Editor_partName")); //$NON-NLS-1$
addExtra2.setImage(_imageReg.get(IconsInternal.ADD));
addExtra2.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getSeriesTitleInfo() == null)
{
_currentReference.setSeriesTitleInfo(new TitleInfo());
_currentReference.getSeriesTitleInfo().setTitle(" "); //$NON-NLS-1$
}
_currentReference.getSeriesTitleInfo().setPartName(" "); //$NON-NLS-1$
_currentReference.getSeriesTitleInfo().setPartNumber(" "); //$NON-NLS-1$
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getOriginInfo() == null || _currentReference.getOriginInfo().getPlaceTerm() == null)
{
final Button addOrigin = new Button(rowButtonComp, SWT.PUSH);
addOrigin.setText(NLMessages.getString("Editor_place"));
addOrigin.setToolTipText(NLMessages.getString("Editor_add_origin_info_tooltip"));
addOrigin.setImage(_imageReg.get(IconsInternal.ADD));
addOrigin.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setPlaceTerm(" "); //$NON-NLS-1$
_currentReference.getOriginInfo().setPlaceType("text"); //$NON-NLS-1$
notifyObservers();
}
});
}
if (_currentReference.getOriginInfo() == null || _currentReference.getOriginInfo().getPublisher() == null)
{
final Button addOrigin = new Button(rowButtonComp, SWT.PUSH);
addOrigin.setText(NLMessages.getString("Editor_publisher"));
addOrigin.setToolTipText(NLMessages.getString("Editor_add_origin_info_tooltip"));
addOrigin.setImage(_imageReg.get(IconsInternal.ADD));
addOrigin.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setPublisher(" "); //$NON-NLS-1$
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getOriginInfo() == null || _currentReference.getOriginInfo().getDateCreated() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_dateCreated"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setDateCreated(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
if (_currentReference.getOriginInfo() == null
|| _currentReference.getOriginInfo().getDateCreatedTimespan() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_add_date_created_timespan"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setDateCreatedTimespan(new TimeSpan());
_currentReference.getOriginInfo().getDateCreatedTimespan().setDateFrom(new PdrDate(0, 0, 0));
_currentReference.getOriginInfo().getDateCreatedTimespan().setDateTo(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getOriginInfo() == null || _currentReference.getOriginInfo().getDateIssued() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_dateIssued"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setDateIssued(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
if (_currentReference.getOriginInfo() == null
|| _currentReference.getOriginInfo().getDateIssuedTimespan() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_add_date_issued_timespan"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setDateIssuedTimespan(new TimeSpan());
_currentReference.getOriginInfo().getDateIssuedTimespan().setDateFrom(new PdrDate(0, 0, 0));
_currentReference.getOriginInfo().getDateIssuedTimespan().setDateTo(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getOriginInfo() == null
|| _currentReference.getOriginInfo().getCopyrightDate() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_copyrightDate"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setCopyrightDate(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
if (_currentReference.getOriginInfo() == null
|| _currentReference.getOriginInfo().getCopyrightDateTimespan() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_add_date_copyright_timespan"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setCopyrightDateTimespan(new TimeSpan());
_currentReference.getOriginInfo().getCopyrightDateTimespan().setDateFrom(new PdrDate(0, 0, 0));
_currentReference.getOriginInfo().getCopyrightDateTimespan().setDateTo(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getOriginInfo() == null
|| _currentReference.getOriginInfo().getDateCaptured() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_dateCaptured"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setDateCaptured(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
if (_currentReference.getOriginInfo() == null
|| _currentReference.getOriginInfo().getDateCapturedTimespan() == null)
{
final Button addDate = new Button(rowButtonComp, SWT.PUSH);
addDate.setText(NLMessages.getString("Editor_add_date_captured_timespan"));
addDate.setToolTipText(NLMessages.getString("Editor_add_dates_tooltip"));
addDate.setImage(_imageReg.get(IconsInternal.ADD));
addDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setDateCapturedTimespan(new TimeSpan());
_currentReference.getOriginInfo().getDateCapturedTimespan().setDateFrom(new PdrDate(0, 0, 0));
_currentReference.getOriginInfo().getDateCapturedTimespan().setDateTo(new PdrDate(0, 0, 0));
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getOriginInfo() == null || _currentReference.getOriginInfo().getEdition() == null)
{
final Button addOrigin = new Button(rowButtonComp, SWT.PUSH);
addOrigin.setText(NLMessages.getString("Editor_edition"));
addOrigin.setToolTipText(NLMessages.getString("Editor_add_origin_info_tooltip"));
addOrigin.setImage(_imageReg.get(IconsInternal.ADD));
addOrigin.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getOriginInfo() == null)
{
_currentReference.setOriginInfo(new OriginInfo());
}
_currentReference.getOriginInfo().setEdition(" "); //$NON-NLS-1$
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getLocation() == null || _currentReference.getLocation().getUrl() == null)
{
final Button addLocation = new Button(rowButtonComp, SWT.PUSH);
addLocation.setText(NLMessages.getString("Editor_url"));
addLocation.setToolTipText(NLMessages.getString("Editor_add_location_tooltip"));
addLocation.setImage(_imageReg.get(IconsInternal.ADD));
addLocation.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getLocation() == null)
{
_currentReference.setLocation(new LocationMods());
}
if (_currentReference.getLocation().getUrl() == null)
{
_currentReference.getLocation().setUrl(" "); //$NON-NLS-1$
}
notifyObservers();
}
});
}
if (_currentReference.getLocation() == null
|| _currentReference.getLocation().getPhysicalLocation() == null)
{
final Button addLocation = new Button(rowButtonComp, SWT.PUSH);
addLocation.setText(NLMessages.getString("Editor_physicalLocation"));
addLocation.setToolTipText(NLMessages.getString("Editor_add_location_tooltip"));
addLocation.setImage(_imageReg.get(IconsInternal.ADD));
addLocation.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getLocation() == null)
{
_currentReference.setLocation(new LocationMods());
}
if (_currentReference.getLocation().getPhysicalLocation() == null)
{
_currentReference.getLocation().setPhysicalLocation(" "); //$NON-NLS-1$
}
notifyObservers();
}
});
}
if (_currentReference.getLocation() == null || _currentReference.getLocation().getShelfLocator() == null)
{
final Button addLocation = new Button(rowButtonComp, SWT.PUSH);
addLocation.setText(NLMessages.getString("Editor_shelfLocator"));
addLocation.setToolTipText(NLMessages.getString("Editor_add_location_tooltip"));
addLocation.setImage(_imageReg.get(IconsInternal.ADD));
addLocation.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getLocation() == null)
{
_currentReference.setLocation(new LocationMods());
}
if (_currentReference.getLocation().getShelfLocator() == null)
{
_currentReference.getLocation().setShelfLocator(" "); //$NON-NLS-1$
}
notifyObservers();
}
});
}
}
// if (_currentReference.getIdentifiersMods() == null ||
// _currentReference.getIdentifiersMods().isEmpty())
// {
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
final Button addIdentis = new Button(rowButtonComp, SWT.PUSH);
addIdentis.setText(NLMessages.getString("Editor_add_identifiers"));
addIdentis.setToolTipText(NLMessages.getString("Editor_add_identifiers_tooltip"));
addIdentis.setImage(_imageReg.get(IconsInternal.ADD));
addIdentis.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getIdentifiersMods() == null)
{
_currentReference.setIdentifiersMods(new Vector<IdentifierMods>(1));
}
IdentifierMods i = new IdentifierMods();
i.setIdentifier(" "); //$NON-NLS-1$
i.setType("ISBN-13"); //$NON-NLS-1$
_currentReference.getIdentifiersMods().add(i);
notifyObservers();
}
});
// }
if (_currentReference.getNote() == null || _currentReference.getNote().getNote() == null)
{
final Button addNote = new Button(rowButtonComp, SWT.PUSH);
addNote.setText(NLMessages.getString("Editor_add_note"));
addNote.setToolTipText(NLMessages.getString("Editor_add_note_tooltip"));
addNote.setImage(_imageReg.get(IconsInternal.ADD));
addNote.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getNote() == null)
{
_currentReference.setNote(new Note());
}
_currentReference.getNote().setNote(" "); //$NON-NLS-1$
_currentReference.getNote().setType(" ");
notifyObservers();
}
});
}
if (_currentReference.getAccessCondition() == null)
{
final Button addAccessCon = new Button(rowButtonComp, SWT.PUSH);
addAccessCon.setText(NLMessages.getString("Editor_add_access"));
addAccessCon.setToolTipText(NLMessages.getString("Editor_add_access_tooltip"));
addAccessCon.setImage(_imageReg.get(IconsInternal.ADD));
addAccessCon.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getAccessCondition() == null)
{
_currentReference.setAccessCondition(new AccessCondition());
}
_currentReference.getAccessCondition().setAccessCondition(" "); //$NON-NLS-1$
_currentReference.getAccessCondition().setType("restrictions"); //$NON-NLS-1$
notifyObservers();
}
});
}
}
{
Composite rowButtonComp = new Composite(_addButtonComp, SWT.NONE);
rowButtonComp.setLayoutData(new GridData());
((GridData) rowButtonComp.getLayoutData()).widthHint = 370;
((GridData) rowButtonComp.getLayoutData()).grabExcessHorizontalSpace = false;
rowButtonComp.setLayout(new RowLayout());
if (_currentReference.getRelatedItems() == null || _currentReference.getRelatedItems().size() == 0
|| _currentReference.getRelatedItems().firstElement() == null)
{
final Button addAccessCon = new Button(rowButtonComp, SWT.PUSH);
addAccessCon.setText(NLMessages.getString("Editor_add_related_item"));
addAccessCon.setToolTipText(NLMessages.getString("Editor_add_related_item_tooltip"));
addAccessCon.setImage(_imageReg.get(IconsInternal.ADD));
addAccessCon.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
RelatedItem relItem = new RelatedItem();
relItem.setType("host"); //$NON-NLS-1$
if (_currentReference.getRelatedItems() == null)
{
_currentReference.setRelatedItems(new Vector<RelatedItem>(1));
}
_currentReference.getRelatedItems().add(relItem); //$NON-NLS-1$
notifyObservers();
}
});
}
if (_currentReference.getRelatedItems() == null
|| _currentReference.getRelatedItems().isEmpty()
|| _currentReference.getRelatedItems().firstElement() == null
|| _currentReference.getRelatedItems().firstElement().getPart() == null
|| _currentReference.getRelatedItems().firstElement().getPart().getDetailVolume() == null
|| _currentReference.getRelatedItems().firstElement().getPart().getDetailVolume().getNumber() == null
|| _currentReference.getRelatedItems().firstElement().getPart().getDetailIssue() == null
|| _currentReference.getRelatedItems().firstElement().getPart().getDetailIssue().getNumber() == null)
{
final Button addVolumeIssue = new Button(rowButtonComp, SWT.PUSH);
addVolumeIssue.setText(NLMessages.getString("Editor_add_related_item") + " "
+ NLMessages.getString("Editor_add_volume"));
addVolumeIssue
.setToolTipText("Add Information about the Volume, Issue and Pages where this reference appeared in.");
addVolumeIssue.setImage(_imageReg.get(IconsInternal.ADD));
addVolumeIssue.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
RelatedItem relItem;
if (_currentReference.getRelatedItems() == null)
{
_currentReference.setRelatedItems(new Vector<RelatedItem>(1));
}
if (_currentReference.getRelatedItems().isEmpty()
|| _currentReference.getRelatedItems().firstElement() == null)
{
relItem = new RelatedItem();
relItem.setType("host"); //$NON-NLS-1$)
_currentReference.getRelatedItems().add(relItem); //$NON-NLS-1$
}
if (_currentReference.getRelatedItems().firstElement().getPart() == null)
{
_currentReference.getRelatedItems().firstElement().setPart(new PartMods());
}
relItem = _currentReference.getRelatedItems().firstElement();
if (relItem.getPart().getDetailVolume() == null)
{
final DetailMods detailVolume = new DetailMods();
detailVolume.setType("volume");
detailVolume.setNumber("");
relItem.getPart().setDetails(new Vector<DetailMods>(2));
relItem.getPart().getDetails().add(detailVolume);
}
else
{
relItem.getPart().getDetailVolume().setNumber("");
}
if (relItem.getPart().getDetailIssue() == null)
{
DetailMods detailIssue = new DetailMods();
detailIssue.setType("issue");
detailIssue.setNumber("");
relItem.getPart().getDetails().add(detailIssue);
}
else
{
relItem.getPart().getDetailIssue().setNumber("");
}
if (relItem.getPart().getExtendPages() == null)
{
ExtendMods extendPages = new ExtendMods();
extendPages.setUnit("pages");
extendPages.setStart("");
extendPages.setEnd("");
relItem.getPart().setExtendsMods(new Vector<ExtendMods>(2));
relItem.getPart().getExtendsMods().add(extendPages);
}
else
{
relItem.getPart().getExtendPages().setStart("");
relItem.getPart().getExtendPages().setEnd("");
}
notifyObservers();
}
});
}
if (_currentReference.getRelatedItems() == null || _currentReference.getRelatedItems().isEmpty()
|| _currentReference.getRelatedItems().firstElement() == null
|| _currentReference.getRelatedItems().firstElement().getPart() == null
|| _currentReference.getRelatedItems().firstElement().getPart().getDates() == null
|| _currentReference.getRelatedItems().firstElement().getPart().getDates().isEmpty()
|| _currentReference.getRelatedItems().firstElement().getPart().getDates().firstElement() == null)
// ||
// _currentReference.getRelatedItems().firstElement().getPart().getDates().firstElement().getYear()
// == 0)
{
final Button addrelItemDate = new Button(rowButtonComp, SWT.PUSH);
addrelItemDate.setText(NLMessages.getString("Editor_add_related_item") + " "
+ NLMessages.getString("Editor_add_date_part"));
addrelItemDate.setToolTipText(NLMessages.getString("Editor_add_related_item_tooltip"));
addrelItemDate.setImage(_imageReg.get(IconsInternal.ADD));
addrelItemDate.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (_currentReference.getRelatedItems() == null)
{
_currentReference.setRelatedItems(new Vector<RelatedItem>(1));
}
if (_currentReference.getRelatedItems().isEmpty()
|| _currentReference.getRelatedItems().firstElement() == null)
{
RelatedItem relItem = new RelatedItem();
relItem.setType("host"); //$NON-NLS-1$)
_currentReference.getRelatedItems().add(relItem); //$NON-NLS-1$
}
if (_currentReference.getRelatedItems().firstElement().getPart() == null)
{
_currentReference.getRelatedItems().firstElement().setPart(new PartMods());
}
if (_currentReference.getRelatedItems().firstElement().getPart().getDates() == null)
{
_currentReference.getRelatedItems().firstElement().getPart()
.setDates(new Vector<PdrDate>(1));
}
if (_currentReference.getRelatedItems().firstElement().getPart().getDates().isEmpty()
|| _currentReference.getRelatedItems().firstElement().getPart().getDates()
.firstElement() == null)
{
_currentReference.getRelatedItems().firstElement().getPart().getDates()
.add(new PdrDate(0, 0, 0));
}
notifyObservers();
}
});
}
rowButtonComp.layout();
rowButtonComp.pack();
}
_addButtonComp.layout();
_addButtonComp.pack();
_mainComp.layout();
_mainComp.pack();
}
/**
* Notify observers.
*/
private void notifyObservers()
{
createContentArea();
for (Observer o : _observers)
{
o.update(null, null);
}
}
/**
* Open help.
*/
protected final void openHelp()
{
_parentShell.setFocus();
MessageBox box = new MessageBox(_parentShell, SWT.ICON_INFORMATION);
box.setText("Info");
box.setMessage("Here is where we'd show some information.");
box.open();
}
/**
* Open url.
*/
protected final void openURL()
{
MessageBox box = new MessageBox(_parentShell, SWT.ICON_INFORMATION);
box.setText("Eclipse.org");
box.setMessage("Here is where we'd open the URL.");
box.open();
}
/**
* Sets the reference.
* @param reference the new reference
*/
public final void setReference(final ReferenceMods reference)
{
_currentReference = reference;
}
/**
* Sets the tool tip text.
* @param toolTipText the new tool tip text
*/
public final void setToolTipText(final String toolTipText)
{
this._toolTipText = toolTipText;
if (_link != null && !_link.isDisposed())
{
_link.setText(toolTipText);
}
}
}