/* * 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.connection.ui; import org.apache.directory.studio.connection.core.ConnectionParameter; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.swt.widgets.Composite; /** * Base implementation of ConnectionParameterPage. * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public abstract class AbstractConnectionParameterPage implements ConnectionParameterPage { /** The page id. */ protected String pageId; /** The page name. */ protected String pageName; /** The page description. */ protected String pageDescription; /** The page id this page depends on. */ protected String pageDependsOnId; /** The runnable context. */ protected IRunnableContext runnableContext; /** The connection parameter page modify listener. */ protected ConnectionParameterPageModifyListener connectionParameterPageModifyListener; /** The message. */ protected String message; /** The error message. */ protected String errorMessage; /** The info message. */ protected String infoMessage; /** The connection parameter. */ protected ConnectionParameter connectionParameter; /** * Sets the connection parameter page modify listener. * * @param listener the connection parameter page modify listener */ public void setConnectionParameterPageModifyListener( ConnectionParameterPageModifyListener listener ) { this.connectionParameterPageModifyListener = listener; } /** * Fires a connection page modified event when then page was modified. */ protected void fireConnectionPageModified() { connectionParameterPageModifyListener.connectionParameterPageModified(); } /** * Sets the runnable context. * * @param runnableContext the runnable context */ public void setRunnableContext( IRunnableContext runnableContext ) { this.runnableContext = runnableContext; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageId() */ public String getPageId() { return pageId; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#setPageId(java.lang.String) */ public void setPageId( String pageId ) { this.pageId = pageId; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageName() */ public String getPageName() { return pageName; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#setPageName(java.lang.String) */ public void setPageName( String pageName ) { this.pageName = pageName; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageDescription() */ public String getPageDescription() { return pageDescription; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#setPageDescription(java.lang.String) */ public void setPageDescription( String pageDescription ) { this.pageDescription = pageDescription; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getPageDependsOnId() */ public String getPageDependsOnId() { return pageDependsOnId; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#setPageDependsOnId(java.lang.String) */ public void setPageDependsOnId( String pageDependsOnId ) { this.pageDependsOnId = pageDependsOnId; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getErrorMessage() */ public String getErrorMessage() { return errorMessage; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getMessage() */ public String getMessage() { return message; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#isValid() */ public boolean isValid() { return message == null && errorMessage == null; } /** * @see org.apache.directory.studio.connection.ui.ConnectionParameterPage#getInfoMessage() */ public String getInfoMessage() { return infoMessage; } /** * {@inheritDoc} */ public final void init( Composite parent, ConnectionParameterPageModifyListener listener, ConnectionParameter parameter ) { createComposite( parent ); if ( listener != null ) { setConnectionParameterPageModifyListener( listener ); } if ( parameter != null ) { loadParameters( parameter ); } initListeners(); connectionPageModified(); } /** * Called when an input field was modified. */ protected final void connectionPageModified() { validate(); fireConnectionPageModified(); } /** * Creates the composite. * * @param parent the parent */ protected abstract void createComposite( Composite parent ); /** * Validates the input fields. */ protected abstract void validate(); /** * Initializes the fields with the given parameters. * * @param parameter the connection parameter */ protected abstract void loadParameters( ConnectionParameter parameter ); /** * Initializes the listeners. */ protected abstract void initListeners(); }