/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.directory.studio.schemaeditor.view.editors;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.Hyperlink;
/**
* This abstract class defines a schema object editor page.
*/
public abstract class AbstractSchemaObjectEditorPage<E extends FormEditor> extends FormPage
{
/** The flag to indicate if the page has been initialized */
protected boolean initialized = false;
/**
* Default constructor
*
* @param editor the parent editor
* @param id the unique identifier
* @param title the page title
*/
public AbstractSchemaObjectEditorPage( E editor, String id, String title )
{
super( editor, id, title );
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public E getEditor()
{
return ( E ) super.getEditor();
}
/**
* {@inheritDoc}
*/
protected void createFormContent( IManagedForm managedForm )
{
initialized = true;
}
/**
* Adds listeners to UI fields
*/
protected void addListeners()
{
}
/**
* Removes listeners from UI fields
*/
protected void removeListeners()
{
}
/**
* Initializes the UI fields from the input.
*/
protected void fillInUiFields()
{
}
/**
* {@inheritDoc}
*/
public void dispose()
{
removeListeners();
super.dispose();
}
/**
* Refreshes the UI.
*/
public void refreshUI()
{
if ( initialized )
{
removeListeners();
fillInUiFields();
addListeners();
}
}
/**
* Adds a modify listener to the given Text.
*
* @param text the Text control
* @param listener the listener
*/
protected void addModifyListener( Text text, ModifyListener listener )
{
if ( ( text != null ) && ( !text.isDisposed() ) && ( listener != null ) )
{
text.addModifyListener( listener );
}
}
/**
* Adds a modify listener to the given Text.
*
* @param text the StyledText control
* @param listener the listener
*/
protected void addModifyListener( StyledText text, ModifyListener listener )
{
if ( ( text != null ) && ( !text.isDisposed() ) && ( listener != null ) )
{
text.addModifyListener( listener );
}
}
/**
* Adds a modify listener to the given Text.
*
* @param combo the Combo control
* @param listener the listener
*/
protected void addModifyListener( Combo combo, ModifyListener listener )
{
if ( ( combo != null ) && ( !combo.isDisposed() ) && ( listener != null ) )
{
combo.addModifyListener( listener );
}
}
/**
* Adds a verify listener to the given Text.
*
* @param text the Text control
* @param listener the listener
*/
protected void addVerifyListener( Text text, VerifyListener listener )
{
if ( ( text != null ) && ( !text.isDisposed() ) && ( listener != null ) )
{
text.addVerifyListener( listener );
}
}
/**
* Adds a selection changed listener to the given Viewer.
*
* @param viewer the viewer control
* @param listener the listener
*/
protected void addSelectionChangedListener( Viewer viewer, ISelectionChangedListener listener )
{
if ( ( viewer != null ) && ( viewer.getControl() != null ) && ( !viewer.getControl().isDisposed() )
&& ( listener != null ) )
{
viewer.addSelectionChangedListener( listener );
}
}
/**
* Adds an hyperlink listener to the given HyperLink.
*
* @param hyperLink the HyperLink
* @param listener the listener
*/
protected void addHyperlinkListener( Hyperlink hyperLink, IHyperlinkListener listener )
{
if ( ( hyperLink != null ) && ( !hyperLink.isDisposed() ) && ( listener != null ) )
{
hyperLink.addHyperlinkListener( listener );
}
}
/**
* Adds a selection listener to the given Button.
*
* @param button the Button control
* @param listener the listener
*/
protected void addSelectionListener( Button button, SelectionListener listener )
{
if ( ( button != null ) && ( !button.isDisposed() ) && ( listener != null ) )
{
button.addSelectionListener( listener );
}
}
/**
* Adds a mouse listener to the given Table.
*
* @param table the Table control
* @param listener the listener
*/
protected void addMouseListener( Table table, MouseListener listener )
{
if ( ( table != null ) && ( !table.isDisposed() ) && ( listener != null ) )
{
table.addMouseListener( listener );
}
}
/**
* Removes a modify listener from the given Text.
*
* @param text the Text control
* @param listener the listener
*/
protected void removeModifyListener( Text text, ModifyListener listener )
{
if ( ( text != null ) && ( !text.isDisposed() ) && ( listener != null ) )
{
text.removeModifyListener( listener );
}
}
/**
* Removes a modify listener from the given Text.
*
* @param text the StyledText control
* @param listener the listener
*/
protected void removeModifyListener( StyledText text, ModifyListener listener )
{
if ( ( text != null ) && ( !text.isDisposed() ) && ( listener != null ) )
{
text.removeModifyListener( listener );
}
}
/**
* Removes a modify listener from the given Text.
*
* @param combo the Combo control
* @param listener the listener
*/
protected void removeModifyListener( Combo combo, ModifyListener listener )
{
if ( ( combo != null ) && ( !combo.isDisposed() ) && ( listener != null ) )
{
combo.removeModifyListener( listener );
}
}
/**
* Removes a verify listener from the given Text.
*
* @param text the Text control
* @param listener the listener
*/
protected void removeVerifyListener( Text text, VerifyListener listener )
{
if ( ( text != null ) && ( !text.isDisposed() ) && ( listener != null ) )
{
text.removeVerifyListener( listener );
}
}
/**
* Removes a selection changed listener from the given Viewer.
*
* @param viewer
* the viewer control
* @param listener
* the listener
*/
protected void removeSelectionChangedListener( Viewer viewer, ISelectionChangedListener listener )
{
if ( ( viewer != null ) && ( viewer.getControl() != null ) && ( !viewer.getControl().isDisposed() )
&& ( listener != null ) )
{
viewer.removeSelectionChangedListener( listener );
}
}
/**
* Removes an hyperlink listener from the given HyperLink.
*
* @param hyperLink the HyperLink
* @param listener the listener
*/
protected void removeHyperlinkListener( Hyperlink hyperLink, IHyperlinkListener listener )
{
if ( ( hyperLink != null ) && ( !hyperLink.isDisposed() ) && ( listener != null ) )
{
hyperLink.removeHyperlinkListener( listener );
}
}
/**
* Removes a selection listener from the given Button.
*
* @param button
* the Button control
* @param listener
* the listener
*/
protected void removeSelectionListener( Button button, SelectionListener listener )
{
if ( ( button != null ) && ( !button.isDisposed() ) && ( listener != null ) )
{
button.removeSelectionListener( listener );
}
}
/**
* Removes a mouse listener from the given Table.
*
* @param table the Table control
* @param listener the listener
*/
protected void removeMouseListener( Table table, MouseListener listener )
{
if ( ( table != null ) && ( !table.isDisposed() ) && ( listener != null ) )
{
table.removeMouseListener( listener );
}
}
}