/* * 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.openldap.config.editor.pages; import java.util.ArrayList; import java.util.List; import org.apache.directory.api.util.Strings; import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils; import org.apache.directory.studio.common.ui.widgets.TableWidget; import org.apache.directory.studio.common.ui.widgets.WidgetModifyEvent; import org.apache.directory.studio.common.ui.widgets.WidgetModifyListener; import org.apache.directory.studio.openldap.common.ui.model.LogLevelEnum; import org.apache.directory.studio.openldap.common.ui.dialogs.LogLevelDialog; import org.apache.directory.studio.openldap.config.OpenLdapConfigurationPluginUtils; import org.apache.directory.studio.openldap.config.editor.OpenLDAPServerConfigurationEditor; import org.apache.directory.studio.openldap.config.editor.overlays.ModuleWrapper; import org.apache.directory.studio.openldap.config.editor.overlays.ModuleWrapperLabelProvider; import org.apache.directory.studio.openldap.config.editor.overlays.ModuleWrapperViewerSorter; import org.apache.directory.studio.openldap.config.editor.pages.OverlaysPage; import org.apache.directory.studio.openldap.config.editor.wrappers.DatabaseWrapper; import org.apache.directory.studio.openldap.config.editor.wrappers.DatabaseWrapperLabelProvider; import org.apache.directory.studio.openldap.config.editor.wrappers.DatabaseWrapperViewerSorter; import org.apache.directory.studio.openldap.config.editor.wrappers.ServerIdDecorator; import org.apache.directory.studio.openldap.config.editor.wrappers.ServerIdWrapper; import org.apache.directory.studio.openldap.config.model.OlcGlobal; import org.apache.directory.studio.openldap.config.model.OlcModuleList; import org.apache.directory.studio.openldap.config.model.database.OlcDatabaseConfig; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.Hyperlink; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; /** * This class represents the General Page of the Server Configuration Editor. It exposes some * of the configured elements, and allow the user to configure some basic parameters : * <ul> * <li>olcServerID</li> * <li>olcConfigDir</li> * <li>olcConfigFile</li> * <li>olcPidFile</li> * <li>olcLogFile</li> * <li>olcLogLevel</li> * </ul> * * The olcConfigFile is not handled, it's deprecated. * <pre> * .-----------------------------------------------------------------------------------. * | Overview | * +-----------------------------------------------------------------------------------+ * | .-------------------------------------------------------------------------------. | * | |V Global parameters | | * | +-------------------------------------------------------------------------------+ | * | | Server ID : | | * | | +-----------------------------------------------------------------+ | | * | | | | (Add) | | * | | | | (Edit) | | * | | | | (Delete) | | * | | +-----------------------------------------------------------------+ | | * | | | | * | | Configuration Dir : [ ] Pid File : [ ] | | * | | Log File : [ ] Log Level : [ ] (edit)| | * | +-------------------------------------------------------------------------------+ | * | | * | .---------------------------------------. .------------------------------------. | * | |V Databases | |V Overlays | | * | +---------------------------------------+ +------------------------------------+ | * | | +----------------------------------+ | | +--------------------------------+ | | * | | | abc | | | | module 1 | | | * | | | xyz | | | | module 2 | | | * | | +----------------------------------+ | | +--------------------------------+ | | * | | <Advanced databases configuration> | | <Overlays configuration> | | * | +---------------------------------------+ +------------------------------------+ | * | | * | .-------------------------------------------------------------------------------. | * | |V Configuration detail | | * | +-------------------------------------------------------------------------------+ | * | | <Security configuration> <Tunning configuration> | | * | | <Schemas configuration> <Options configuration> | | * | +-------------------------------------------------------------------------------+ | * +-----------------------------------------------------------------------------------+ * </pre> * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public class OverviewPage extends OpenLDAPServerConfigurationEditorPage { /** The Page ID*/ public static final String ID = OverviewPage.class.getName(); //$NON-NLS-1$ /** The Page Title */ private static final String TITLE = Messages.getString( "OpenLDAPOverviewPage.Title" ); //$NON-NLS-1$"Overview"; // UI Controls /** The serverID wrapper */ private List<ServerIdWrapper> serverIdWrappers = new ArrayList<ServerIdWrapper>(); /** The Widget used to manage ServerID */ private TableWidget<ServerIdWrapper> serverIdTableWidget; /** olcConfigDir */ private Text configDirText; /** olcPidFile */ private Text pidFileText; /** olcLogFile */ private Text logFileText; /** olcLogLevel */ private Text logLevelText; private Button logLevelEditButton; /** The table listing all the existing databases */ private TableViewer databaseViewer; /** The database wrappers */ private List<DatabaseWrapper> databaseWrappers = new ArrayList<DatabaseWrapper>(); /** This link opens the Databases configuration tab */ private Hyperlink databasesPageLink; /** The table listing all the existing modules */ private TableViewer moduleViewer; /** The module wrappers */ private List<ModuleWrapper> moduleWrappers = new ArrayList<ModuleWrapper>(); /** This link opens the Overlays configuration tab */ private Hyperlink overlaysPageLink; /** This link opens the Security configuration tab */ private Hyperlink securityPageLink; /** This link opens the Tuning configuration tab */ private Hyperlink tuningPageLink; /** This link opens the Schema configuration tab */ private Hyperlink schemaPageLink; /** This link opens the Options configuration tab */ private Hyperlink optionsPageLink; /** * The olcLogFile listener */ private ModifyListener logFileTextListener = new ModifyListener() { public void modifyText( ModifyEvent e ) { getConfiguration().getGlobal().setOlcLogFile( logFileText.getText() ); } }; /** * The olcConfigDir listener */ private ModifyListener configDirTextListener = new ModifyListener() { public void modifyText( ModifyEvent e ) { getConfiguration().getGlobal().setOlcConfigDir( configDirText.getText() ); } }; /** * The olcPidFile listener */ private ModifyListener pidFileTextListener = new ModifyListener() { public void modifyText( ModifyEvent e ) { getConfiguration().getGlobal().setOlcPidFile( pidFileText.getText() ); } }; /** * The olcLogLevl listener */ private SelectionListener logLevelEditButtonSelectionListener = new SelectionAdapter() { public void widgetSelected( SelectionEvent e ) { // Creating and opening a LogLevel dialog String logLevelStr = logLevelText.getText(); int logLevelValue = LogLevelEnum.NONE.getValue(); if ( !Strings.isEmpty( logLevelStr ) ) { logLevelValue = LogLevelEnum.parseLogLevel( logLevelStr ); } LogLevelDialog dialog = new LogLevelDialog( logLevelEditButton.getShell(), logLevelValue ); if ( LogLevelDialog.OK == dialog.open() ) { logLevelStr = LogLevelEnum.getLogLevelText( dialog.getLogLevelValue() ); logLevelText.setText( logLevelStr ); List<String> logLevelList = new ArrayList<String>(); logLevelList.add( logLevelStr ); getConfiguration().getGlobal().setOlcLogLevel( logLevelList ); } } }; /** * Creates a new instance of GeneralPage. * * @param editor the associated editor */ public OverviewPage( OpenLDAPServerConfigurationEditor editor ) { super( editor, ID, TITLE ); } /** * Databases configuration hyper link adapter */ private HyperlinkAdapter databasesPageLinkListener = new HyperlinkAdapter() { public void linkActivated( HyperlinkEvent e ) { getServerConfigurationEditor().showPage( DatabasesPage.class ); } }; /** * Overlays configuration hyper link adapter */ private HyperlinkAdapter overlaysPageLinkListener = new HyperlinkAdapter() { public void linkActivated( HyperlinkEvent e ) { getServerConfigurationEditor().showPage( OverlaysPage.class ); } }; /** * Security configuration hyper link adapter */ private HyperlinkAdapter securityPageLinkListener = new HyperlinkAdapter() { public void linkActivated( HyperlinkEvent e ) { getServerConfigurationEditor().showPage( SecurityPage.class ); } }; /** * Tuning configuration hyper link adapter */ private HyperlinkAdapter tuningPageLinkListener = new HyperlinkAdapter() { public void linkActivated( HyperlinkEvent e ) { getServerConfigurationEditor().showPage( TuningPage.class ); } }; /** * Schema configuration hyper link adapter */ private HyperlinkAdapter schemaPageLinkListener = new HyperlinkAdapter() { public void linkActivated( HyperlinkEvent e ) { //getServerConfigurationEditor().showPage( SchemaPage.class ); } }; /** * Options configuration hyper link adapter */ private HyperlinkAdapter optionsPageLinkListener = new HyperlinkAdapter() { public void linkActivated( HyperlinkEvent e ) { getServerConfigurationEditor().showPage( OptionsPage.class ); } }; // The listener for the ServerIdTableWidget private WidgetModifyListener serverIdTableWidgetListener = new WidgetModifyListener() { @Override public void widgetModified( WidgetModifyEvent event ) { // Process the parameter modification TableWidget<ServerIdWrapper> serverIdWrapperTable = (TableWidget<ServerIdWrapper>)event.getSource(); List<String> serverIds = new ArrayList<String>(); for ( Object serverIdWrapper : serverIdWrapperTable.getElements() ) { String str = serverIdWrapper.toString(); serverIds.add( str ); } getConfiguration().getGlobal().setOlcServerID( serverIds ); } }; /** * Creates the global Overview OpenLDAP config Tab. It contains 3 rows, with * one or two sections in each : * * <pre> * +---------------------------------------------------------------------+ * | | * | Global parameters | * | | * +-----------------------------------+---------------------------------+ * | | | * | Databases | Overlays | * | | | * +-----------------------------------+---------------------------------+ * | | * | Configuration links | * | | * +---------------------------------------------------------------------+ * </pre> * {@inheritDoc} */ protected void createFormContent( Composite parent, FormToolkit toolkit ) { TableWrapLayout twl = new TableWrapLayout(); twl.numColumns = 2; parent.setLayout( twl ); // The upper part Composite upperComposite = toolkit.createComposite( parent ); upperComposite.setLayout( new GridLayout() ); TableWrapData leftCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP, 1, 2 ); leftCompositeTableWrapData.grabHorizontal = true; upperComposite.setLayoutData( leftCompositeTableWrapData ); // The middle left part Composite middleLeftComposite = toolkit.createComposite( parent ); middleLeftComposite.setLayout( new GridLayout() ); TableWrapData middleLeftCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP, 1, 1 ); middleLeftCompositeTableWrapData.grabHorizontal = true; middleLeftComposite.setLayoutData( middleLeftCompositeTableWrapData ); // The middle right part Composite middleRightComposite = toolkit.createComposite( parent ); middleRightComposite.setLayout( new GridLayout() ); TableWrapData middleRightCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP, 1, 1 ); middleRightCompositeTableWrapData.grabHorizontal = true; middleRightComposite.setLayoutData( middleRightCompositeTableWrapData ); // The lower part Composite lowerComposite = toolkit.createComposite( parent ); lowerComposite.setLayout( new GridLayout() ); TableWrapData lowerCompositeTableWrapData = new TableWrapData( TableWrapData.FILL, TableWrapData.TOP, 1, 2 ); lowerCompositeTableWrapData.grabHorizontal = true; lowerComposite.setLayoutData( lowerCompositeTableWrapData ); // Now, create the sections createGlobalSection( toolkit, upperComposite ); createDatabasesSection( toolkit, middleLeftComposite ); createOverlaysSection( toolkit, middleRightComposite ); createConfigDetailsLinksSection( toolkit, lowerComposite ); } /** * Creates the global section. This section is a grid with 4 columns, * where we configure the global options. We support the configuration * of those parameters : * <ul> * <li>olcServerID</li> * <li>olcConfigDir</li> * <li>olcPidFile</li> * <li>olcLogFile</li> * <li>olcLogLevel</li> * </ul> * * <pre> * .-------------------------------------------------------------------------------. * |V Global parameters | * +-------------------------------------------------------------------------------+ * | Server ID : | * | +-----------------------------------------------------------------+ | * | | | (Add) | * | | | (Edit) | * | | | (Delete) | * | +-----------------------------------------------------------------+ | * | | * | Configuration Dir : [ ] Pid File : [ ] | * | Log File : [ ] Log Level : [ ] (edit)| * +-------------------------------------------------------------------------------+ * </pre> * * * @param toolkit the toolkit * @param parent the parent composite */ private void createGlobalSection( FormToolkit toolkit, Composite parent ) { // Creation of the section Section section = createSection( toolkit, parent, Messages.getString( "OpenLDAPOverviewPage.GlobalSection" ) ); // The content Composite globalSectionComposite = toolkit.createComposite( section ); toolkit.paintBordersFor( globalSectionComposite ); GridLayout gridLayout = new GridLayout( 5, false ); gridLayout.marginHeight = gridLayout.marginWidth = 0; globalSectionComposite.setLayout( gridLayout ); section.setClient( globalSectionComposite ); // The ServerID parameter. Label serverIdLabel = toolkit.createLabel( globalSectionComposite, Messages.getString( "OpenLDAPOverviewPage.ServerID" ) ); //$NON-NLS-1$ serverIdLabel.setLayoutData( new GridData( SWT.FILL, SWT.FILL, false, false, 5, 1 ) ); // The ServerID widget serverIdTableWidget = new TableWidget<ServerIdWrapper>( new ServerIdDecorator( section.getShell() ) ); serverIdTableWidget.createWidgetWithEdit( globalSectionComposite, toolkit ); serverIdTableWidget.getControl().setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 5, 1 ) ); serverIdTableWidget.addWidgetModifyListener( serverIdTableWidgetListener ); // One blank line for ( int i = 0; i < gridLayout.numColumns; i++ ) { toolkit.createLabel( globalSectionComposite, TABULATION ); } // The ConfigDir parameter toolkit.createLabel( globalSectionComposite, Messages.getString( "OpenLDAPOverviewPage.ConfigDir" ) ); //$NON-NLS-1$ configDirText = createConfigDirText( toolkit, globalSectionComposite ); // The PidFile parameter toolkit.createLabel( globalSectionComposite, Messages.getString( "OpenLDAPOverviewPage.PidFile" ) ); //$NON-NLS-1$ pidFileText = createPidFileText( toolkit, globalSectionComposite ); // The LogFile parameter toolkit.createLabel( globalSectionComposite, Messages.getString( "OpenLDAPOverviewPage.LogFile" ) ); //$NON-NLS-1$ logFileText = createLogFileText( toolkit, globalSectionComposite ); // The LogLevel parameter toolkit.createLabel( globalSectionComposite, Messages.getString( "OpenLDAPOverviewPage.LogLevel" ) ); logLevelText = BaseWidgetUtils.createText( globalSectionComposite, "", 1 ); logLevelText.setEditable( false ); logLevelEditButton = BaseWidgetUtils.createButton( globalSectionComposite, Messages.getString( "OpenLDAPSecurityPage.EditLogLevels" ), 1 ); logLevelEditButton.addSelectionListener( logLevelEditButtonSelectionListener ); } /** * Creates the Databases section. It only expose the existing databases, * they can't be changed. * * <pre> * .------------------------------------. * |V Databases | * +------------------------------------+ * | +-------------------------------+ | * | | abc | | * | | xyz | | * | +-------------------------------+ | * | <Advanced databases configuration> | * +------------------------------------+ * </pre> * * @param toolkit the toolkit * @param parent the parent composite */ private void createDatabasesSection( FormToolkit toolkit, Composite parent ) { // Creation of the section Section section = createSection( toolkit, parent, Messages.getString( "OpenLDAPOverviewPage.DatabasesSection" ) ); // The content Composite composite = toolkit.createComposite( section ); toolkit.paintBordersFor( composite ); GridLayout gridLayout = new GridLayout( 1, false ); gridLayout.marginHeight = gridLayout.marginWidth = 0; composite.setLayout( gridLayout ); section.setClient( composite ); // The inner composite Composite databaseComposite = toolkit.createComposite( section ); databaseComposite.setLayout( new GridLayout( 1, false ) ); toolkit.paintBordersFor( databaseComposite ); section.setClient( databaseComposite ); section.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) ); // Creating the Table and Table Viewer Table table = toolkit.createTable( databaseComposite, SWT.NONE ); GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 5 ); gd.heightHint = 100; gd.widthHint = 100; table.setLayoutData( gd ); databaseViewer = new TableViewer( table ); databaseViewer.setContentProvider( new ArrayContentProvider() ); databaseViewer.setLabelProvider( new DatabaseWrapperLabelProvider() ); databaseViewer.setSorter( new DatabaseWrapperViewerSorter() ); // Databases Page Link databasesPageLink = toolkit.createHyperlink( databaseComposite, Messages.getString( "OpenLDAPOverviewPage.DatabasesPageLink" ), SWT.NONE ); //$NON-NLS-1$ databasesPageLink.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) ); databasesPageLink.addHyperlinkListener( databasesPageLinkListener ); } /** * Creates the Overlays section. It only expose the existing overlays, * they can't be changed. * * <pre> * .------------------------------------. * |V Overlays | * +------------------------------------+ * | +-------------------------------+ | * | | abc | | * | | xyz | | * | +-------------------------------+ | * | <Advanced Overlays configuration> | * +------------------------------------+ * </pre> * * @param toolkit the toolkit * @param parent the parent composite */ private void createOverlaysSection( FormToolkit toolkit, Composite parent ) { // Creation of the section Section section = createSection( toolkit, parent, Messages.getString( "OpenLDAPOverviewPage.OverlaysSection" ) ); // The content Composite composite = toolkit.createComposite( section ); toolkit.paintBordersFor( composite ); GridLayout gridLayout = new GridLayout( 1, false ); gridLayout.marginHeight = gridLayout.marginWidth = 0; composite.setLayout( gridLayout ); section.setClient( composite ); // The inner composite Composite overlayComposite = toolkit.createComposite( section ); overlayComposite.setLayout( new GridLayout( 1, false ) ); toolkit.paintBordersFor( overlayComposite ); section.setClient( overlayComposite ); section.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) ); // Creating the Table and Table Viewer Table table = toolkit.createTable( overlayComposite, SWT.NONE ); GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 5 ); gd.heightHint = 100; gd.widthHint = 100; table.setLayoutData( gd ); moduleViewer = new TableViewer( table ); moduleViewer.setContentProvider( new ArrayContentProvider() ); moduleViewer.setLabelProvider( new ModuleWrapperLabelProvider() ); moduleViewer.setSorter( new ModuleWrapperViewerSorter() ); // Overlays Page Link overlaysPageLink = toolkit.createHyperlink( overlayComposite, Messages.getString( "OpenLDAPOverviewPage.OverlaysPageLink" ), SWT.NONE ); //$NON-NLS-1$ overlaysPageLink.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) ); overlaysPageLink.addHyperlinkListener( overlaysPageLinkListener ); } /** * Creates the configuration details section. It just links to some other pages * * <pre> * .----------------------------------------------------. * |V Configuration detail | * +----------------------------------------------------+ * | <Security configuration> <Tunning configuration> | * | <Schemas configuration> <Options configuration> | * +----------------------------------------------------+ * </pre> * * @param toolkit the toolkit * @param parent the parent composite */ private void createConfigDetailsLinksSection( FormToolkit toolkit, Composite parent ) { // Creation of the section Section section = createSection( toolkit, parent, Messages.getString( "OpenLDAPOverviewPage.ConfigDetailsSection" ) ); // The content Composite composite = toolkit.createComposite( section ); toolkit.paintBordersFor( composite ); GridLayout gridLayout = new GridLayout( 2, false ); gridLayout.marginHeight = gridLayout.marginWidth = 0; composite.setLayout( gridLayout ); section.setClient( composite ); // Security Page Link securityPageLink = toolkit.createHyperlink( composite, Messages.getString( "OpenLDAPOverviewPage.SecurityPageLink" ), SWT.NONE ); //$NON-NLS-1$ securityPageLink.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) ); securityPageLink.addHyperlinkListener( securityPageLinkListener ); // Tuning Page Link tuningPageLink = toolkit.createHyperlink( composite, Messages.getString( "OpenLDAPOverviewPage.TuningPageLink" ), SWT.NONE ); //$NON-NLS-1$ tuningPageLink.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) ); tuningPageLink.addHyperlinkListener( tuningPageLinkListener ); // Schema Page Link schemaPageLink = toolkit.createHyperlink( composite, Messages.getString( "OpenLDAPOverviewPage.SchemaPageLink" ), SWT.NONE ); //$NON-NLS-1$ schemaPageLink.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) ); schemaPageLink.addHyperlinkListener( schemaPageLinkListener ); // Options Page Link optionsPageLink = toolkit.createHyperlink( composite, Messages.getString( "OpenLDAPOverviewPage.OptionsPageLink" ), SWT.NONE ); //$NON-NLS-1$ optionsPageLink.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) ); optionsPageLink.addHyperlinkListener( optionsPageLinkListener ); } /** * Creates a Text that can be used to enter an ConfigDir. * * @param toolkit the toolkit * @param parent the parent * @return a Text that can be used to enter a config Dir */ private Text createConfigDirText( FormToolkit toolkit, Composite parent ) { final Text configDirText = toolkit.createText( parent, "" ); //$NON-NLS-1$ GridData gd = new GridData( SWT.NONE, SWT.NONE, false, false ); gd.widthHint = 300; configDirText.setLayoutData( gd ); // No more than 512 digits configDirText.setTextLimit( 512 ); // The associated listener addModifyListener( configDirText, configDirTextListener ); return configDirText; } /** * Creates a Text that can be used to enter a PID file. * * @param toolkit the toolkit * @param parent the parent * @return a Text that can be used to enter a PID file */ private Text createPidFileText( FormToolkit toolkit, Composite parent ) { final Text pidFileText = toolkit.createText( parent, "" ); //$NON-NLS-1$ GridData gd = new GridData( SWT.FILL, SWT.NONE, false, true, 2, 1 ); gd.widthHint = 300; pidFileText.setLayoutData( gd ); // No more than 512 digits pidFileText.setTextLimit( 512 ); // The associated listener addModifyListener( pidFileText, pidFileTextListener ); return pidFileText; } /** * Creates a Text that can be used to enter a Log file. * * @param toolkit the toolkit * @param parent the parent * @return a Text that can be used to enter a Log file */ private Text createLogFileText( FormToolkit toolkit, Composite parent ) { final Text logFileText = toolkit.createText( parent, "" ); //$NON-NLS-1$ GridData gd = new GridData( SWT.NONE, SWT.NONE, false, false ); gd.widthHint = 300; logFileText.setLayoutData( gd ); // No more than 512 digits logFileText.setTextLimit( 512 ); // The associated listener addModifyListener( logFileText, logFileTextListener ); return logFileText; } /** * Get the various LogLevel values, and concatenate them in a String */ private String getLogLevel() { List<String> logLevelList = getConfiguration().getGlobal().getOlcLogLevel(); if ( logLevelList == null ) { return "none"; } boolean isFirst = true; StringBuilder sb = new StringBuilder(); for ( String logLevel : logLevelList ) { if ( isFirst ) { isFirst = false; } else { sb.append( " " ); } sb.append( logLevel ); } return sb.toString(); } /** * {@inheritDoc} */ public void refreshUI() { if ( isInitialized() ) { removeListeners(); // Getting the global configuration object OlcGlobal global = getConfiguration().getGlobal(); if ( global != null ) { // Update the ServerIDText // Update the DatabaseTableViewer serverIdWrappers.clear(); for ( String serverIdWrapper : global.getOlcServerID() ) { serverIdWrappers.add( new ServerIdWrapper( serverIdWrapper ) ); } serverIdTableWidget.setElements( serverIdWrappers ); // Update the ConfigDirText BaseWidgetUtils.setValue( global.getOlcConfigDir(), configDirText ); // Update the LogFIleText BaseWidgetUtils.setValue( global.getOlcLogFile(), logFileText ); // Update the DatabaseTableViewer databaseWrappers.clear(); for ( OlcDatabaseConfig database : getConfiguration().getDatabases() ) { databaseWrappers.add( new DatabaseWrapper( database ) ); } databaseViewer.setInput( databaseWrappers ); // Update the OverlaysTableViewer moduleWrappers.clear(); for ( OlcModuleList moduleList : getConfiguration().getModules() ) { List<String> modules = moduleList.getOlcModuleLoad(); int index = OpenLdapConfigurationPluginUtils.getOrderingPostfix( moduleList.getCn().get( 0 ) ); if ( modules != null ) { for ( String module : modules ) { int order = OpenLdapConfigurationPluginUtils.getOrderingPrefix( module ); String strippedModule = OpenLdapConfigurationPluginUtils.stripOrderingPrefix( module ); String strippedModuleListName = OpenLdapConfigurationPluginUtils.stripOrderingPostfix( moduleList.getCn().get( 0 ) ); moduleWrappers.add( new ModuleWrapper( strippedModuleListName, index, strippedModule, moduleList. getOlcModulePath(), order ) ); } } } moduleViewer.setInput( moduleWrappers ); // Update the LogLevelWidget String logLevels = getLogLevel(); logLevelText.setText( logLevels ); addListeners(); } } } /** * Removes the listeners */ private void removeListeners() { // The serverID Text removeDirtyListener( serverIdTableWidget ); // The configDir Text removeDirtyListener( configDirText ); // The pidFile Text removeDirtyListener( pidFileText ); // The logFile Text removeDirtyListener( logFileText ); // The LogLevel Widget removeDirtyListener( logLevelText ); } /** * Adds listeners to UI Controls. */ private void addListeners() { // The serverID Text addDirtyListener( serverIdTableWidget ); // The configDir Text addDirtyListener( configDirText ); // The pidFile Text addDirtyListener( pidFileText ); // The logFile Text addDirtyListener( logFileText ); // The LogLevel Widget addDirtyListener( logLevelText ); } }