You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by fe...@apache.org on 2007/11/05 17:48:54 UTC
svn commit: r592079 [14/17] - in
/directory/sandbox/felixk/studio-ldapbrowser-common: ./ META-INF/ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/directory/
src/main/java/org/apache/directory/studio/...
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenBestEditorAction.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenBestEditorAction.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenBestEditorAction.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenBestEditorAction.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,125 @@
+/*
+ * 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.ldapbrowser.common.widgets.entryeditor;
+
+
+import org.apache.directory.studio.valueeditors.IValueEditor;
+import org.apache.directory.studio.valueeditors.ValueEditorManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.TreeViewer;
+
+
+/**
+ * The OpenBestEditorAction is used to edit a value with the best value editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class OpenBestEditorAction extends AbstractOpenEditorAction
+{
+
+ /** The best value editor. */
+ private IValueEditor bestValueEditor;
+
+
+ /**
+ * Creates a new instance of OpenBestEditorAction.
+ *
+ * @param viewer the viewer
+ * @param valueEditorManager the value editor manager
+ */
+ public OpenBestEditorAction( TreeViewer viewer, ValueEditorManager valueEditorManager )
+ {
+ super( viewer, valueEditorManager );
+ }
+
+
+ /**
+ * Gets the best value editor.
+ *
+ * @return the best value editor
+ */
+ public IValueEditor getBestValueEditor()
+ {
+ return this.bestValueEditor;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.AbstractOpenEditorAction#dispose()
+ */
+ public void dispose()
+ {
+ bestValueEditor = null;
+ super.dispose();
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getCommandId()
+ */
+ public String getCommandId()
+ {
+ return null;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor()
+ {
+ return isEnabled() ? bestValueEditor.getValueEditorImageDescriptor() : null;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getText()
+ */
+ public String getText()
+ {
+ return isEnabled() ? bestValueEditor.getValueEditorName() : null;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#isEnabled()
+ */
+ public boolean isEnabled()
+ {
+ if ( getSelectedValues().length == 1
+ && getSelectedAttributes().length == 0
+ && viewer.getCellModifier().canModify( getSelectedValues()[0],
+ EntryEditorWidgetTableMetadata.VALUE_COLUMN_NAME ) )
+ {
+ // update value editor
+ bestValueEditor = valueEditorManager.getCurrentValueEditor( getSelectedValues()[0] );
+ super.cellEditor = bestValueEditor.getCellEditor();
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenBestEditorAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenDefaultEditorAction.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenDefaultEditorAction.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenDefaultEditorAction.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenDefaultEditorAction.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,154 @@
+/*
+ * 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.ldapbrowser.common.widgets.entryeditor;
+
+
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction;
+import org.apache.directory.studio.ldapbrowser.common.actions.RenameAction;
+import org.apache.directory.studio.ldapbrowser.common.actions.proxy.EntryEditorActionProxy;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.TreeViewer;
+
+
+/**
+ * The OpenBestEditorAction is used to edit a value with the default value editor.
+ * This is either the best value editor or in case of an RDN attribute the rename
+ * action is invoked.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class OpenDefaultEditorAction extends BrowserAction
+{
+
+ /** The best value editor proxy. */
+ private EntryEditorActionProxy bestValueEditorProxy;
+
+ /** The rename proxy. */
+ private EntryEditorActionProxy renameProxy;
+
+
+ /**
+ * Creates a new instance of OpenDefaultEditorAction.
+ *
+ * @param viewer the viewer
+ * @param bestValueEditorProxy the best value editor proxy
+ * @param enableRenameAction true to enable rename action
+ */
+ public OpenDefaultEditorAction( TreeViewer viewer, EntryEditorActionProxy bestValueEditorProxy,
+ boolean enableRenameAction )
+ {
+ this.bestValueEditorProxy = bestValueEditorProxy;
+ this.renameProxy = enableRenameAction ? new EntryEditorActionProxy( viewer, null, new RenameAction() ) : null;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#dispose()
+ */
+ public void dispose()
+ {
+ bestValueEditorProxy = null;
+ renameProxy = null;
+
+ super.dispose();
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getCommandId()
+ */
+ public String getCommandId()
+ {
+ return BrowserCommonConstants.ACTION_ID_EDIT_VALUE;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor()
+ {
+ if ( bestValueEditorProxy != null )
+ {
+ return bestValueEditorProxy.getImageDescriptor();
+ }
+ else if ( renameProxy != null )
+ {
+ return renameProxy.getImageDescriptor();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getText()
+ */
+ public String getText()
+ {
+ return "Edit Value";
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#isEnabled()
+ */
+ public boolean isEnabled()
+ {
+ if ( bestValueEditorProxy != null && renameProxy != null )
+ {
+ return bestValueEditorProxy.isEnabled() || renameProxy.isEnabled();
+ }
+ else if ( renameProxy != null )
+ {
+ return renameProxy.isEnabled();
+ }
+ else if ( bestValueEditorProxy != null )
+ {
+ return bestValueEditorProxy.isEnabled();
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#run()
+ */
+ public void run()
+ {
+ if ( bestValueEditorProxy != null && bestValueEditorProxy.isEnabled() )
+ {
+ bestValueEditorProxy.run();
+ }
+ else if ( renameProxy != null && renameProxy.isEnabled() )
+ {
+ renameProxy.run();
+ }
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenDefaultEditorAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenEditorAction.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenEditorAction.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenEditorAction.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenEditorAction.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,140 @@
+/*
+ * 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.ldapbrowser.common.widgets.entryeditor;
+
+
+import java.util.Arrays;
+
+import org.apache.directory.studio.valueeditors.IValueEditor;
+import org.apache.directory.studio.valueeditors.ValueEditorManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.TreeViewer;
+
+
+/**
+ * The OpenEditorAction is used to edit a value with a specific value editor.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class OpenEditorAction extends AbstractOpenEditorAction
+{
+
+ /** The specific value editor. */
+ private IValueEditor valueEditor;
+
+
+ /**
+ * Creates a new instance of OpenEditorAction.
+ *
+ * @param viewer the viewer
+ * @param valueEditorManager the value editor manager
+ * @param valueEditor the specific value editor
+ */
+ public OpenEditorAction( TreeViewer viewer, ValueEditorManager valueEditorManager, IValueEditor valueEditor )
+ {
+ super( viewer, valueEditorManager );
+ super.cellEditor = valueEditor.getCellEditor();
+ this.valueEditor = valueEditor;
+ }
+
+
+ /**
+ * Gets the value editor.
+ *
+ * @return the value editor
+ */
+ public IValueEditor getValueEditor()
+ {
+ return valueEditor;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.AbstractOpenEditorAction#run()
+ */
+ public void run()
+ {
+ // ensure that the specific value editor is activated
+ valueEditorManager.setUserSelectedValueEditor( valueEditor );
+
+ super.run();
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.widgets.entryeditor.AbstractOpenEditorAction#dispose()
+ */
+ public void dispose()
+ {
+ this.valueEditor = null;
+ super.dispose();
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getCommandId()
+ */
+ public String getCommandId()
+ {
+ return null;
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getImageDescriptor()
+ */
+ public ImageDescriptor getImageDescriptor()
+ {
+ return valueEditor.getValueEditorImageDescriptor();
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#getText()
+ */
+ public String getText()
+ {
+ return valueEditor.getValueEditorName();
+ }
+
+
+ /**
+ * @see org.apache.directory.studio.ldapbrowser.common.actions.BrowserAction#isEnabled()
+ */
+ public boolean isEnabled()
+ {
+ if ( getSelectedValues().length == 1
+ && getSelectedAttributes().length == 0
+ && viewer.getCellModifier().canModify( getSelectedValues()[0],
+ EntryEditorWidgetTableMetadata.VALUE_COLUMN_NAME ) )
+ {
+ IValueEditor[] alternativeVps = valueEditorManager.getAlternativeValueEditors( getSelectedValues()[0] );
+ return Arrays.asList( alternativeVps ).contains( valueEditor )
+ && valueEditor.getRawValue( getSelectedValues()[0] ) != null;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenEditorAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenSortDialogAction.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenSortDialogAction.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenSortDialogAction.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenSortDialogAction.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,54 @@
+/*
+ * 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.ldapbrowser.common.widgets.entryeditor;
+
+
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.eclipse.jface.action.Action;
+import org.eclipse.ui.PlatformUI;
+
+
+public class OpenSortDialogAction extends Action
+{
+
+ private EntryEditorWidgetPreferences preferences;
+
+
+ public OpenSortDialogAction( EntryEditorWidgetPreferences preferences )
+ {
+ super.setText( "Sorting..." );
+ super.setToolTipText( "Sorting..." );
+ super.setImageDescriptor( BrowserCommonActivator.getDefault().getImageDescriptor( BrowserCommonConstants.IMG_SORT ) );
+ super.setEnabled( true );
+
+ this.preferences = preferences;
+ }
+
+
+ public void run()
+ {
+ EntryEditorWidgetSorterDialog dlg = new EntryEditorWidgetSorterDialog( PlatformUI.getWorkbench().getDisplay()
+ .getActiveShell(), this.preferences );
+ dlg.open();
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/OpenSortDialogAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/ShowQuickFilterAction.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/ShowQuickFilterAction.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/ShowQuickFilterAction.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/ShowQuickFilterAction.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,113 @@
+/*
+ * 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.ldapbrowser.common.widgets.entryeditor;
+
+
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.eclipse.jface.action.Action;
+import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
+
+
+/**
+ * This action shows/hides the instant search.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ShowQuickFilterAction extends Action
+{
+
+ /** The Constant SHOW_QUICKFILTER_DIALOGSETTING_KEY. */
+ public static final String SHOW_QUICKFILTER_DIALOGSETTING_KEY = ShowQuickFilterAction.class.getName()
+ + ".showQuickFilter";
+
+ /** The quick filter widget. */
+ private EntryEditorWidgetQuickFilterWidget quickFilterWidget;
+
+
+ /**
+ * Creates a new instance of ShowQuickFilterAction.
+ *
+ * @param quickFilterWidget the quick filter widget
+ */
+ public ShowQuickFilterAction( EntryEditorWidgetQuickFilterWidget quickFilterWidget )
+ {
+ super( "Show Quick Filter", AS_CHECK_BOX );
+ setToolTipText( "Show Quick Filter" );
+ setImageDescriptor( BrowserCommonActivator.getDefault().getImageDescriptor( BrowserCommonConstants.IMG_FILTER ) );
+ setActionDefinitionId( IWorkbenchActionDefinitionIds.FIND_REPLACE );
+ setEnabled( true );
+
+ this.quickFilterWidget = quickFilterWidget;
+
+ if ( BrowserCommonActivator.getDefault().getDialogSettings().get( SHOW_QUICKFILTER_DIALOGSETTING_KEY ) == null )
+ {
+ BrowserCommonActivator.getDefault().getDialogSettings().put( SHOW_QUICKFILTER_DIALOGSETTING_KEY, false );
+ }
+
+ // call the super implementation here because the local implementation
+ // does nothing.
+ super.setChecked( BrowserCommonActivator.getDefault().getDialogSettings().getBoolean(
+ SHOW_QUICKFILTER_DIALOGSETTING_KEY ) );
+ quickFilterWidget.setActive( isChecked() );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation toggles the checked state and
+ * activates or deactivates the quick filter accordingly.
+ */
+ public void run()
+ {
+ boolean checked = isChecked();
+ super.setChecked( !checked );
+
+ BrowserCommonActivator.getDefault().getDialogSettings().put( SHOW_QUICKFILTER_DIALOGSETTING_KEY, isChecked() );
+
+ if ( quickFilterWidget != null )
+ {
+ quickFilterWidget.setActive( isChecked() );
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation does nothing. Toggling of the checked state is done within the run() method.
+ */
+ public void setChecked( boolean checked )
+ {
+ }
+
+
+ /**
+ * Disposes this action.
+ */
+ public void dispose()
+ {
+ quickFilterWidget = null;
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/entryeditor/ShowQuickFilterAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/AliasesDereferencingWidget.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/AliasesDereferencingWidget.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/AliasesDereferencingWidget.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/AliasesDereferencingWidget.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,166 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BrowserWidget;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.AliasDereferencingMethod;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+
+/**
+ * The AliasesDereferencingWidget could be used to select the
+ * alias dereferencing method. It is composed of a group with
+ * two check boxes.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class AliasesDereferencingWidget extends BrowserWidget
+{
+
+ /** The initial aliases dereferencing method */
+ private AliasDereferencingMethod initialAliasesDereferencingMethod;
+
+ /** The group. */
+ private Group group;
+
+ /** The finding button. */
+ private Button findingButton;
+
+ /** The search button. */
+ private Button searchButton;
+
+
+ /**
+ * Creates a new instance of AliasesDereferencingWidget with the given
+ * dereferencing method.
+ *
+ * @param initialAliasesDereferencingMethod the initial aliases dereferencing method
+ */
+ public AliasesDereferencingWidget( AliasDereferencingMethod initialAliasesDereferencingMethod )
+ {
+ this.initialAliasesDereferencingMethod = initialAliasesDereferencingMethod;
+ }
+
+
+ /**
+ * Creates a new instance of AliasesDereferencingWidget. The initial
+ * dereferencing method is set to {@link AliasDereferencingMethod.NEVER}.
+ */
+ public AliasesDereferencingWidget()
+ {
+ this.initialAliasesDereferencingMethod = AliasDereferencingMethod.NEVER;
+ }
+
+
+ /**
+ * Creates the widget.
+ *
+ * @param parent the parent
+ */
+ public void createWidget( Composite parent )
+ {
+
+ group = BaseWidgetUtils.createGroup( parent, "Aliases Dereferencing", 1 );
+ Composite groupComposite = BaseWidgetUtils.createColumnContainer( group, 1, 1 );
+
+ findingButton = BaseWidgetUtils.createCheckbox( groupComposite, "Finding Base DN", 1 );
+ findingButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ searchButton = BaseWidgetUtils.createCheckbox( groupComposite, "Search", 1 );
+ searchButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ setAliasesDereferencingMethod( initialAliasesDereferencingMethod );
+ }
+
+
+ /**
+ * Sets the aliases dereferencing method.
+ *
+ * @param aliasesDereferencingMethod the aliases dereferencing method
+ */
+ public void setAliasesDereferencingMethod( AliasDereferencingMethod aliasesDereferencingMethod )
+ {
+ initialAliasesDereferencingMethod = aliasesDereferencingMethod;
+ findingButton.setSelection( initialAliasesDereferencingMethod == AliasDereferencingMethod.FINDING
+ || initialAliasesDereferencingMethod == AliasDereferencingMethod.ALWAYS );
+ searchButton.setSelection( initialAliasesDereferencingMethod == AliasDereferencingMethod.SEARCH
+ || initialAliasesDereferencingMethod == AliasDereferencingMethod.ALWAYS );
+ }
+
+
+ /**
+ * Gets the aliases dereferencing method.
+ *
+ * @return the aliases dereferencing method
+ */
+ public AliasDereferencingMethod getAliasesDereferencingMethod()
+ {
+ if ( findingButton.getSelection() && searchButton.getSelection() )
+ {
+ return AliasDereferencingMethod.ALWAYS;
+ }
+ else if ( findingButton.getSelection() )
+ {
+ return AliasDereferencingMethod.FINDING;
+ }
+ else if ( searchButton.getSelection() )
+ {
+ return AliasDereferencingMethod.SEARCH;
+ }
+ else
+ {
+ return AliasDereferencingMethod.NEVER;
+ }
+ }
+
+
+ /**
+ * Sets the enabled state of the widget.
+ *
+ * @param b true to enable the widget, false to disable the widget
+ */
+ public void setEnabled( boolean b )
+ {
+ group.setEnabled( b );
+ findingButton.setEnabled( b );
+ searchButton.setEnabled( b );
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/AliasesDereferencingWidget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/BrowserConnectionWidget.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/BrowserConnectionWidget.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/BrowserConnectionWidget.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/BrowserConnectionWidget.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,143 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import org.apache.directory.studio.ldapbrowser.common.dialogs.SelectBrowserConnectionDialog;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BrowserWidget;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+
+/**
+ * The BrowserConnectionWidget could be used to select an {@link IBrowserConnection}.
+ * It is composed of a text to display the selected connection
+ * and a browse button to open a {@link SelectBrowserConnectionDialog}.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class BrowserConnectionWidget extends BrowserWidget
+{
+
+ /** The connection text, displays the selected connection */
+ private Text browserConnectionText;
+
+ /** The connection browse button, opens the dialog */
+ private Button connectionBrowseButton;
+
+ /** The selected connection */
+ private IBrowserConnection selectedBrowserConnection;
+
+
+ /**
+ * Creates a new instance of ConnectionWidget.
+ *
+ * @param connection the initial connection
+ */
+ public BrowserConnectionWidget( IBrowserConnection connection )
+ {
+ this.selectedBrowserConnection = connection;
+ }
+
+
+ /**
+ * Creates a new instance of ConnectionWidget with no initial connection.
+ */
+ public BrowserConnectionWidget()
+ {
+ this.selectedBrowserConnection = null;
+ }
+
+
+ /**
+ * Creates the widget.
+ *
+ * @param parent the parent
+ */
+ public void createWidget( final Composite parent )
+ {
+ // Text
+ browserConnectionText = BaseWidgetUtils.createReadonlyText( parent, "", 1 );
+
+ // Button
+ connectionBrowseButton = BaseWidgetUtils.createButton( parent, "B&rowse...", 1 );
+ connectionBrowseButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ SelectBrowserConnectionDialog dialog = new SelectBrowserConnectionDialog( parent.getShell(),
+ "Select Connection", selectedBrowserConnection );
+ dialog.open();
+ IBrowserConnection browserConnection = dialog.getSelectedBrowserConnection();
+ if ( browserConnection != null )
+ {
+ setBrowserConnection( browserConnection );
+ notifyListeners();
+ }
+ }
+ } );
+
+ // initial values
+ setBrowserConnection( selectedBrowserConnection );
+ }
+
+
+ /**
+ * Gets the selected connection.
+ *
+ * @return the connection
+ */
+ public IBrowserConnection getBrowserConnection()
+ {
+ return selectedBrowserConnection;
+ }
+
+
+ /**
+ * Sets the selected connection.
+ *
+ * @param connection the connection
+ */
+ public void setBrowserConnection( IBrowserConnection connection )
+ {
+ selectedBrowserConnection = connection;
+ browserConnectionText.setText( selectedBrowserConnection != null ? selectedBrowserConnection.getConnection().getName() : "" );
+ }
+
+
+ /**
+ * Sets the enabled state of the widget.
+ *
+ * @param b true to enable the widget, false to disable the widget
+ */
+ public void setEnabled( boolean b )
+ {
+ browserConnectionText.setEnabled( b );
+ connectionBrowseButton.setEnabled( b );
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/BrowserConnectionWidget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/EntryWidget.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/EntryWidget.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/EntryWidget.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/EntryWidget.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,360 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import javax.naming.InvalidNameException;
+
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator;
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.apache.directory.studio.ldapbrowser.common.dialogs.SelectEntryDialog;
+import org.apache.directory.studio.ldapbrowser.common.jobs.RunnableContextJobAdapter;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BrowserWidget;
+import org.apache.directory.studio.ldapbrowser.common.widgets.HistoryUtils;
+import org.apache.directory.studio.ldapbrowser.core.jobs.ReadEntryJob;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+import org.apache.directory.studio.ldapbrowser.core.model.IEntry;
+import org.apache.directory.studio.ldapbrowser.core.utils.DnUtils;
+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.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * The EntryWidget could be used to select an entry.
+ * It is composed
+ * <ul>
+ * <li>a combo to manually enter an DN or to choose one from
+ * the history
+ * <li>an up button to switch to the parent's DN
+ * <li>a browse button to open a {@link SelectEntryDialog}
+ * </ul>
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class EntryWidget extends BrowserWidget
+{
+
+ /** The DN combo. */
+ private Combo dnCombo;
+
+ /** The up button. */
+ private Button upButton;
+
+ /** The entry browse button. */
+ private Button entryBrowseButton;
+
+ /** The connection. */
+ private IBrowserConnection browserConnection;
+
+ /** The selected DN. */
+ private LdapDN dn;
+
+ /** The suffix. */
+ private LdapDN suffix;
+
+
+ /**
+ * Creates a new instance of EntryWidget.
+ */
+ public EntryWidget()
+ {
+ this.browserConnection = null;
+ this.dn = null;
+ }
+
+
+ /**
+ * Creates a new instance of EntryWidget.
+ *
+ * @param browserConnection the connection
+ * @param dn the initial DN
+ */
+ public EntryWidget( IBrowserConnection browserConnection, LdapDN dn )
+ {
+ this( browserConnection, dn, null );
+ }
+
+
+ /**
+ * Creates a new instance of EntryWidget.
+ *
+ * @param browserConnection the connection
+ * @param dn the initial DN
+ * @param suffix the suffix
+ */
+ public EntryWidget( IBrowserConnection browserConnection, LdapDN dn, LdapDN suffix )
+ {
+ this.browserConnection = browserConnection;
+ this.dn = dn;
+ this.suffix = suffix;
+ }
+
+
+ /**
+ * Creates the widget.
+ *
+ * @param parent the parent
+ */
+ public void createWidget( final Composite parent )
+ {
+
+ // DN combo
+ Composite textAndUpComposite = BaseWidgetUtils.createColumnContainer( parent, 2, 1 );
+ dnCombo = BaseWidgetUtils.createCombo( textAndUpComposite, new String[0], -1, 1 );
+ GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+ gd.horizontalSpan = 1;
+ gd.widthHint = 200;
+ dnCombo.setLayoutData( gd );
+
+ // DN history
+ String[] history = HistoryUtils.load( BrowserCommonConstants.DIALOGSETTING_KEY_DN_HISTORY );
+ dnCombo.setItems( history );
+ dnCombo.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ try
+ {
+ dn = new LdapDN( dnCombo.getText() );
+ }
+ catch ( InvalidNameException e1 )
+ {
+ dn = null;
+ }
+
+ internalSetEnabled();
+ notifyListeners();
+ }
+ } );
+
+ // Up button
+ upButton = new Button( textAndUpComposite, SWT.PUSH );
+ upButton.setToolTipText( "Parent" );
+ upButton.setImage( BrowserCommonActivator.getDefault().getImage( BrowserCommonConstants.IMG_PARENT ) );
+ upButton.setEnabled( false );
+ upButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ if ( dn != null && DnUtils.getParent( dn ) != null )
+ {
+ dn = DnUtils.getParent( dn );
+ dnChanged();
+ internalSetEnabled();
+ notifyListeners();
+ }
+ }
+ } );
+
+ // Browse button
+ entryBrowseButton = BaseWidgetUtils.createButton( parent, "Br&owse...", 1 );
+ entryBrowseButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ if ( browserConnection != null )
+ {
+ // get root entry
+ IEntry rootEntry = browserConnection.getRootDSE();
+ if( suffix != null && suffix.size() > 0 )
+ {
+ rootEntry = browserConnection.getEntryFromCache( suffix );
+ if ( rootEntry == null )
+ {
+ ReadEntryJob job = new ReadEntryJob( browserConnection, suffix );
+ RunnableContextJobAdapter.execute( job );
+ rootEntry = job.getReadEntry();
+ }
+ }
+
+ // calculate initial DN
+ LdapDN initialDN = dn;
+ if( suffix != null && suffix.size() > 0 )
+ {
+ if( initialDN != null && initialDN.size() > 0 )
+ {
+ initialDN = DnUtils.composeDn( initialDN, suffix );
+ }
+ }
+
+ // get initial entry
+ IEntry entry = rootEntry;
+ if ( initialDN != null && initialDN.size() > 0 )
+ {
+ entry = browserConnection.getEntryFromCache( initialDN );
+ if ( entry == null )
+ {
+ ReadEntryJob job = new ReadEntryJob( browserConnection, initialDN );
+ RunnableContextJobAdapter.execute( job );
+ entry = job.getReadEntry();
+ }
+ }
+
+
+ // open dialog
+ SelectEntryDialog dialog = new SelectEntryDialog( parent.getShell(), "Select DN", rootEntry, entry );
+ dialog.open();
+ IEntry selectedEntry = dialog.getSelectedEntry();
+
+ // get selected DN
+ if ( selectedEntry != null )
+ {
+ dn = selectedEntry.getDn();
+ if( suffix != null && suffix.size() > 0 )
+ {
+ dn = DnUtils.getPrefixName( dn, suffix );
+ }
+ dnChanged();
+ internalSetEnabled();
+ notifyListeners();
+ }
+ }
+ }
+ } );
+
+ dnChanged();
+ internalSetEnabled();
+ }
+
+
+ /**
+ * Notifies that the DN has been changed.
+ */
+ private void dnChanged()
+ {
+ if ( dnCombo != null && entryBrowseButton != null )
+ {
+ dnCombo.setText( dn != null ? dn.getUpName() : "" );
+ }
+ }
+
+
+ /**
+ * Sets the enabled state of the widget.
+ *
+ * @param b true to enable the widget, false to disable the widget
+ */
+ public void setEnabled( boolean b )
+ {
+ dnCombo.setEnabled( b );
+
+ if ( b )
+ {
+ this.dnChanged();
+ }
+
+ internalSetEnabled();
+ }
+
+
+ /**
+ * Internal set enabled.
+ */
+ private void internalSetEnabled()
+ {
+ upButton.setEnabled( dn != null && DnUtils.getParent( dn ) != null && dnCombo.isEnabled() );
+ entryBrowseButton.setEnabled( browserConnection != null && dnCombo.isEnabled() );
+ }
+
+
+ /**
+ * Saves dialog settings.
+ */
+ public void saveDialogSettings()
+ {
+ HistoryUtils.save( BrowserCommonConstants.DIALOGSETTING_KEY_DN_HISTORY, this.dnCombo.getText() );
+ }
+
+
+ /**
+ * Gets the suffix DN or <code>null</code> if not set.
+ *
+ * @return the suffix DN or <code>null</code> if not set
+ */
+ public LdapDN getSuffix()
+ {
+ return suffix;
+ }
+
+
+ /**
+ * Gets the DN or <code>null</code> if the DN isn't valid.
+ *
+ * @return the DN or <code>null</code> if the DN isn't valid
+ */
+ public LdapDN getDn()
+ {
+ return dn;
+ }
+
+
+ /**
+ * Gets the browser connection.
+ *
+ * @return the browser connection
+ */
+ public IBrowserConnection getBrowserConnection()
+ {
+ return browserConnection;
+ }
+
+
+ /**
+ * Sets the input.
+ *
+ * @param dn the DN
+ * @param browserConnection the connection
+ */
+ public void setInput( IBrowserConnection browserConnection, LdapDN dn )
+ {
+ setInput( browserConnection, dn, null );
+ }
+
+
+ /**
+ * Sets the input.
+ *
+ * @param browserConnection the connection
+ * @param dn the DN
+ * @param suffix the suffix
+ */
+ public void setInput( IBrowserConnection browserConnection, LdapDN dn, LdapDN suffix )
+ {
+ if ( this.browserConnection != browserConnection || this.dn != dn || this.suffix != suffix )
+ {
+ this.browserConnection = browserConnection;
+ this.dn = dn;
+ this.suffix = suffix;
+ dnChanged();
+ }
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/EntryWidget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidget.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidget.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidget.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidget.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,254 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants;
+import org.apache.directory.studio.ldapbrowser.common.dialogs.FilterDialog;
+import org.apache.directory.studio.ldapbrowser.common.filtereditor.FilterContentAssistProcessor;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BrowserWidget;
+import org.apache.directory.studio.ldapbrowser.common.widgets.HistoryUtils;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
+import org.apache.directory.studio.ldapbrowser.core.model.filter.parser.LdapFilterParser;
+import org.eclipse.jface.bindings.keys.KeyStroke;
+import org.eclipse.jface.fieldassist.ComboContentAdapter;
+import org.eclipse.jface.fieldassist.ContentProposalAdapter;
+import org.eclipse.jface.fieldassist.DecoratedField;
+import org.eclipse.jface.fieldassist.FieldDecoration;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
+import org.eclipse.jface.fieldassist.IControlCreator;
+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.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+
+/**
+ * The FileterWidget could be used to specify an LDAP filter.
+ * It is composed of a combo with a content assist to enter
+ * a filter and a button to open a {@link FilterDialog}.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class FilterWidget extends BrowserWidget
+{
+
+ /** The filter combo. */
+ private Combo filterCombo;
+
+ /** The filter combo field. */
+ private DecoratedField filterComboField;
+
+ /** The filter content proposal adapter */
+ private ContentProposalAdapter filterCPA;
+
+ /** The button to open the filter editor. */
+ private Button filterEditorButton;
+
+ /** The content assist processor. */
+ private FilterContentAssistProcessor contentAssistProcessor;
+
+ /** The connection. */
+ private IBrowserConnection browserConnection;
+
+ /** The inital filter. */
+ private String initalFilter;
+
+ /** The filter parser. */
+ private LdapFilterParser parser;
+
+
+ /**
+ * Creates a new instance of FilterWidget.
+ *
+ * @param browserConnection the connection
+ * @param initalFilter the inital filter
+ */
+ public FilterWidget( IBrowserConnection browserConnection, String initalFilter )
+ {
+ this.browserConnection = browserConnection;
+ this.initalFilter = initalFilter;
+ }
+
+
+ /**
+ * Creates a new instance of FilterWidget with no connection and
+ * no initial filter.
+ */
+ public FilterWidget()
+ {
+ this.browserConnection = null;
+ this.initalFilter = null;
+ }
+
+
+ /**
+ * Creates the widget.
+ *
+ * @param parent the parent
+ */
+ public void createWidget( final Composite parent )
+ {
+ // filter combo with field decoration
+ final FieldDecoration fieldDecoration = FieldDecorationRegistry.getDefault().getFieldDecoration(
+ FieldDecorationRegistry.DEC_CONTENT_PROPOSAL );
+ filterComboField = new DecoratedField( parent, SWT.NONE, new IControlCreator()
+ {
+ public Control createControl( Composite parent, int style )
+ {
+ Combo combo = BaseWidgetUtils.createCombo( parent, new String[0], -1, 1 );
+ GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+ gd.horizontalSpan = 1;
+ gd.widthHint = 200;
+ combo.setLayoutData( gd );
+ combo.setVisibleItemCount( 20 );
+ return combo;
+ }
+ } );
+ filterComboField.addFieldDecoration( fieldDecoration, SWT.TOP | SWT.LEFT, true );
+ filterComboField.getLayoutControl().setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+ filterCombo = ( Combo ) filterComboField.getControl();
+ filterCombo.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ parser = new LdapFilterParser();
+ contentAssistProcessor = new FilterContentAssistProcessor( parser );
+ filterCPA = new ContentProposalAdapter( filterCombo, new ComboContentAdapter(), contentAssistProcessor,
+ KeyStroke.getInstance( SWT.CTRL, ' ' ), null );
+ filterCPA.setFilterStyle( ContentProposalAdapter.FILTER_NONE );
+ filterCPA.setProposalAcceptanceStyle( ContentProposalAdapter.PROPOSAL_REPLACE );
+
+ // auto edit strategy
+ new FilterWidgetAutoEditStrategyAdapter( filterCombo, parser );
+
+ // Filter editor button
+ filterEditorButton = BaseWidgetUtils.createButton( parent, "F&ilter Editor...", 1 );
+ filterEditorButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ if ( browserConnection != null )
+ {
+ FilterDialog dialog = new FilterDialog( parent.getShell(), "Filter Editor", filterCombo.getText(),
+ browserConnection );
+ dialog.open();
+ String filter = dialog.getFilter();
+ if ( filter != null )
+ {
+ filterCombo.setText( filter );
+ }
+ }
+ }
+ } );
+
+ // filter history
+ String[] history = HistoryUtils.load( BrowserCommonConstants.DIALOGSETTING_KEY_SEARCH_FILTER_HISTORY );
+ filterCombo.setItems( history );
+
+ // initial values
+ setBrowserConnection( browserConnection );
+ filterCombo.setText( initalFilter == null ? "(objectClass=*)" : initalFilter );
+ }
+
+
+ /**
+ * Gets the filter or null if the filter is invalid.
+ *
+ * @return the filter or null if the filter is invalid
+ */
+ public String getFilter()
+ {
+ parser.parse( filterCombo.getText() );
+ return parser.getModel().isValid() ? filterCombo.getText() : null;
+ }
+
+
+ /**
+ * Sets the filter.
+ *
+ * @param filter the filter
+ */
+ public void setFilter( String filter )
+ {
+ filterCombo.setText( filter );
+ }
+
+
+ /**
+ * Sets the browser connection.
+ *
+ * @param browserConnection the browser connection
+ */
+ public void setBrowserConnection( IBrowserConnection browserConnection )
+ {
+ if ( this.browserConnection != browserConnection )
+ {
+ this.browserConnection = browserConnection;
+ contentAssistProcessor.setSchema( browserConnection == null ? null : browserConnection.getSchema() );
+ filterCPA.setAutoActivationCharacters( contentAssistProcessor
+ .getCompletionProposalAutoActivationCharacters() );
+ }
+ }
+
+
+ /**
+ * Saves dialog settings.
+ */
+ public void saveDialogSettings()
+ {
+ HistoryUtils.save( BrowserCommonConstants.DIALOGSETTING_KEY_SEARCH_FILTER_HISTORY, filterCombo.getText() );
+ }
+
+
+ /**
+ * Sets the focus.
+ */
+ public void setFocus()
+ {
+ // filterCombo.setFocus();
+ }
+
+
+ /**
+ * Sets the enabled state of the widget.
+ *
+ * @param b true to enable the widget, false to disable the widget
+ */
+ public void setEnabled( boolean b )
+ {
+ filterCombo.setEnabled( b );
+ filterEditorButton.setEnabled( b );
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidgetAutoEditStrategyAdapter.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidgetAutoEditStrategyAdapter.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidgetAutoEditStrategyAdapter.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidgetAutoEditStrategyAdapter.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,171 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.studio.ldapbrowser.common.filtereditor.FilterAutoEditStrategy;
+import org.apache.directory.studio.ldapbrowser.common.filtereditor.FilterAutoEditStrategy.AutoEditParameters;
+import org.apache.directory.studio.ldapbrowser.core.model.filter.parser.LdapFilterParser;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.widgets.Combo;
+
+
+/**
+ * The FilterWidgetAutoEditStrategyAdapter is used to integrate the {@link FilterAutoEditStrategy}
+ * into an combo field.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class FilterWidgetAutoEditStrategyAdapter
+{
+
+ /** The auto edit strategy. */
+ private FilterAutoEditStrategy autoEditStrategy;
+
+ /** The combo. */
+ private Combo combo;
+
+ /** The old texts. */
+ private List<String> oldTexts;
+
+ /** The verify events. */
+ private List<VerifyEvent> verifyEvents;
+
+ /** The in apply combo customization flag. */
+ private boolean inApplyComboCustomization;
+
+
+ /**
+ * Creates a new instance of FilterWidgetAutoEditStrategyAdapter.
+ *
+ * @param combo the combo
+ * @param parser the filter parser
+ */
+ public FilterWidgetAutoEditStrategyAdapter( Combo combo, LdapFilterParser parser )
+ {
+ this.combo = combo;
+
+ this.oldTexts = new ArrayList<String>();
+ this.verifyEvents = new ArrayList<VerifyEvent>();
+ this.inApplyComboCustomization = false;
+
+ this.autoEditStrategy = new FilterAutoEditStrategy( parser );
+ combo.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ prepareComboCustomization( e );
+ }
+ } );
+ combo.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ applyComboCustomization( e );
+ }
+ } );
+ }
+
+
+ /**
+ * Prepares combo customization.
+ *
+ * @param e the verify event
+ */
+ public void prepareComboCustomization( VerifyEvent e )
+ {
+ //System.out.println(e);
+ if ( !inApplyComboCustomization )
+ {
+ String oldText = combo.getText();
+ //parser.parse( oldText );
+
+ oldTexts.add( oldText );
+ verifyEvents.add( e );
+ }
+ }
+
+
+ /**
+ * Applies combo customization.
+ *
+ * @param e the modify event
+ */
+ public void applyComboCustomization( ModifyEvent e )
+ {
+ //System.out.println(e);
+ if ( !inApplyComboCustomization && !verifyEvents.isEmpty() )
+ {
+ String oldText = oldTexts.remove( 0 );
+ VerifyEvent verifyEvent = verifyEvents.remove( 0 );
+ inApplyComboCustomization = true;
+
+ // extract modification details
+ String text = verifyEvent.text;
+ int offset = verifyEvent.start <= verifyEvent.end ? verifyEvent.start : verifyEvent.end;
+ int length = verifyEvent.start <= verifyEvent.end ? verifyEvent.end - verifyEvent.start : verifyEvent.start
+ - verifyEvent.end;
+
+ // apply auto edit strategy
+ AutoEditParameters autoEditParameters = new AutoEditParameters( text, offset, length, -1, true );
+ autoEditStrategy.customizeAutoEditParameters( oldText, autoEditParameters );
+
+ // get current selection
+ Point oldSelection = combo.getSelection();
+
+ // compose new text
+ String newText = "";
+ newText += oldText.substring( 0, autoEditParameters.offset );
+ newText += autoEditParameters.text;
+ newText += oldText.substring( autoEditParameters.offset + autoEditParameters.length, oldText.length() );
+
+ // determine new cursor position
+ Point newSelection;
+ if ( autoEditParameters.caretOffset != -1 )
+ {
+ int x = autoEditParameters.caretOffset;
+ newSelection = new Point( x, x );
+ }
+ else
+ {
+ newSelection = new Point( oldSelection.x, oldSelection.y );
+ }
+
+ // set new text and cursor position
+ if ( verifyEvents.isEmpty() )
+ {
+ combo.setText( newText );
+ combo.setSelection( newSelection );
+ }
+
+ inApplyComboCustomization = false;
+ }
+
+ }
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/FilterWidgetAutoEditStrategyAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/LimitWidget.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/LimitWidget.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/LimitWidget.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/LimitWidget.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,229 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BrowserWidget;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+
+/**
+ * The LimitWidget could be used to select the limits of a connection
+ * or search. It is composed of a group with text input fields.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class LimitWidget extends BrowserWidget
+{
+
+ /** The initial count limit. */
+ private int initialCountLimit;
+
+ /** The initial time limit. */
+ private int initialTimeLimit;
+
+ /** The limit group. */
+ private Group limitGroup;
+
+ /** The count limit label. */
+ private Label countLimitLabel;
+
+ /** The count limit text. */
+ private Text countLimitText;
+
+ /** The time limit label. */
+ private Label timeLimitLabel;
+
+ /** The time limit text. */
+ private Text timeLimitText;
+
+
+ /**
+ * Creates a new instance of LimitWidget.
+ *
+ * @param initialTimeLimit the initial time limit
+ * @param initialCountLimit the initial count limit
+ */
+ public LimitWidget( int initialCountLimit, int initialTimeLimit )
+ {
+ this.initialCountLimit = initialCountLimit;
+ this.initialTimeLimit = initialTimeLimit;
+ }
+
+
+ /**
+ * Creates a new instance of LimitWidget with no limits.
+ */
+ public LimitWidget()
+ {
+ this.initialCountLimit = 0;
+ this.initialTimeLimit = 0;
+ }
+
+
+ /**
+ * Creates the widget.
+ *
+ * @param parent the parent
+ */
+ public void createWidget( Composite parent )
+ {
+
+ limitGroup = BaseWidgetUtils.createGroup( parent, "Limits", 1 );
+ GridLayout gl = new GridLayout( 2, false );
+ limitGroup.setLayout( gl );
+
+ // Count limit
+ countLimitLabel = BaseWidgetUtils.createLabel( limitGroup, "&Count Limit:", 1 );
+ countLimitText = BaseWidgetUtils.createText( limitGroup, "", 1 );
+ countLimitText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) )
+ {
+ e.doit = false;
+ }
+ }
+ } );
+ countLimitText.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ // Time limit
+ timeLimitLabel = BaseWidgetUtils.createLabel( limitGroup, "&Time Limit:", 1 );
+ timeLimitText = BaseWidgetUtils.createText( limitGroup, "", 1 );
+ timeLimitText.addVerifyListener( new VerifyListener()
+ {
+ public void verifyText( VerifyEvent e )
+ {
+ if ( !e.text.matches( "[0-9]*" ) )
+ {
+ e.doit = false;
+ }
+ }
+ } );
+ timeLimitText.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ setCountLimit( initialCountLimit );
+ setTimeLimit( initialTimeLimit );
+ }
+
+
+ /**
+ * Sets the count limit.
+ *
+ * @param countLimit the count limit
+ */
+ public void setCountLimit( int countLimit )
+ {
+ initialCountLimit = countLimit;
+ countLimitText.setText( Integer.toString( initialCountLimit ) );
+ }
+
+
+ /**
+ * Sets the time limit.
+ *
+ * @param timeLimit the time limit
+ */
+ public void setTimeLimit( int timeLimit )
+ {
+ initialTimeLimit = timeLimit;
+ timeLimitText.setText( Integer.toString( initialTimeLimit ) );
+ }
+
+
+ /**
+ * Gets the count limit.
+ *
+ * @return the count limit
+ */
+ public int getCountLimit()
+ {
+ int countLimit;
+ try
+ {
+ countLimit = new Integer( countLimitText.getText() ).intValue();
+ }
+ catch ( NumberFormatException e )
+ {
+ countLimit = 0;
+ }
+ return countLimit;
+ }
+
+
+ /**
+ * Gets the time limit.
+ *
+ * @return the time limit
+ */
+ public int getTimeLimit()
+ {
+ int timeLimit;
+ try
+ {
+ timeLimit = new Integer( timeLimitText.getText() ).intValue();
+ }
+ catch ( NumberFormatException e )
+ {
+ timeLimit = 0;
+ }
+ return timeLimit;
+ }
+
+
+ /**
+ * Sets the enabled state of the widget.
+ *
+ * @param b true to enable the widget, false to disable the widget
+ */
+ public void setEnabled( boolean b )
+ {
+ limitGroup.setEnabled( b );
+ countLimitLabel.setEnabled( b );
+ countLimitText.setEnabled( b );
+ timeLimitLabel.setEnabled( b );
+ timeLimitText.setEnabled( b );
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/LimitWidget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReferralsHandlingWidget.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReferralsHandlingWidget.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReferralsHandlingWidget.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReferralsHandlingWidget.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,156 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import org.apache.directory.studio.ldapbrowser.common.widgets.BaseWidgetUtils;
+import org.apache.directory.studio.ldapbrowser.common.widgets.BrowserWidget;
+import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection.ReferralHandlingMethod;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+
+/**
+ * The ReferralsHandlingWidget could be used to select the
+ * referrals handling method. It is composed of a group with
+ * two radio buttons.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ReferralsHandlingWidget extends BrowserWidget
+{
+
+ /** The initial referrals handling method. */
+ private ReferralHandlingMethod initialReferralsHandlingMethod;
+
+ /** The group. */
+ private Group group;
+
+ /** The ignore button. */
+ private Button ignoreButton;
+
+ /** The follow button. */
+ private Button followButton;
+
+
+ /**
+ * Creates a new instance of ReferralsHandlingWidget with the given
+ * referrals handling method.
+ *
+ * @param initialReferralsHandlingMethod the initial referrals handling method
+ */
+ public ReferralsHandlingWidget( ReferralHandlingMethod initialReferralsHandlingMethod )
+ {
+ this.initialReferralsHandlingMethod = initialReferralsHandlingMethod;
+ }
+
+
+ /**
+ * Creates a new instance of ReferralsHandlingWidget with initial
+ * referrals handling method {@link ReferralHandlingMethod.IGNORE}.
+ */
+ public ReferralsHandlingWidget()
+ {
+ this.initialReferralsHandlingMethod = ReferralHandlingMethod.IGNORE;
+ }
+
+
+ /**
+ * Creates the widget.
+ *
+ * @param parent the parent
+ */
+ public void createWidget( Composite parent )
+ {
+
+ group = BaseWidgetUtils.createGroup( parent, "Referrals Handling", 1 );
+ Composite groupComposite = BaseWidgetUtils.createColumnContainer( group, 1, 1 );
+
+ ignoreButton = BaseWidgetUtils.createRadiobutton( groupComposite, "Ignore", 1 );
+ ignoreButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ followButton = BaseWidgetUtils.createRadiobutton( groupComposite, "Follow", 1 );
+ followButton.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ notifyListeners();
+ }
+ } );
+
+ setReferralsHandlingMethod( initialReferralsHandlingMethod );
+ }
+
+
+ /**
+ * Sets the referrals handling method.
+ *
+ * @param referralsHandlingMethod the referrals handling method
+ */
+ public void setReferralsHandlingMethod( ReferralHandlingMethod referralsHandlingMethod )
+ {
+ initialReferralsHandlingMethod = referralsHandlingMethod;
+ ignoreButton.setSelection( initialReferralsHandlingMethod == ReferralHandlingMethod.IGNORE );
+ followButton.setSelection( initialReferralsHandlingMethod == ReferralHandlingMethod.FOLLOW );
+ }
+
+
+ /**
+ * Gets the referrals handling method.
+ *
+ * @return the referrals handling method
+ */
+ public ReferralHandlingMethod getReferralsHandlingMethod()
+ {
+ if ( ignoreButton.getSelection() )
+ {
+ return ReferralHandlingMethod.IGNORE;
+ }
+ else
+ {
+ return ReferralHandlingMethod.FOLLOW;
+ }
+ }
+
+
+ /**
+ * Sets the enabled state of the widget.
+ *
+ * @param b true to enable the widget, false to disable the widget
+ */
+ public void setEnabled( boolean b )
+ {
+ group.setEnabled( b );
+ ignoreButton.setEnabled( b );
+ followButton.setEnabled( b );
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReferralsHandlingWidget.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReturningAttributesContentAssistProcessor.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReturningAttributesContentAssistProcessor.java?rev=592079&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReturningAttributesContentAssistProcessor.java (added)
+++ directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReturningAttributesContentAssistProcessor.java Mon Nov 5 08:48:35 2007
@@ -0,0 +1,223 @@
+/*
+ * 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.ldapbrowser.common.widgets.search;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jface.contentassist.IContentAssistSubjectControl;
+import org.eclipse.jface.contentassist.ISubjectControlContentAssistProcessor;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.CompletionProposal;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.contentassist.IContextInformationValidator;
+
+
+/**
+ * The ReturningAttributesContentAssistProcessor provides proposals for the
+ * {@link ReturningAttributesWidget}. It splits the comma separted text input
+ * into separate regions.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ReturningAttributesContentAssistProcessor implements ISubjectControlContentAssistProcessor
+{
+
+ /** The auto activation characters */
+ private char[] autoActivationCharacters;
+
+ /** The possible attribute types */
+ private String[] possibleAttributeTypes;
+
+
+ /**
+ * Creates a new instance of ReturningAttributesContentAssistProcessor.
+ *
+ * @param possibleAttributeNames
+ */
+ public ReturningAttributesContentAssistProcessor( String[] possibleAttributeNames )
+ {
+ super();
+ setPossibleAttributeTypes( possibleAttributeTypes );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public char[] getCompletionProposalAutoActivationCharacters()
+ {
+ return autoActivationCharacters;
+ }
+
+
+ /**
+ * Sets the possible attribute types.
+ *
+ * @param possibleAttributeTypes the possible strings
+ */
+ public void setPossibleAttributeTypes( String[] possibleAttributeTypes )
+ {
+ if ( possibleAttributeTypes == null )
+ {
+ possibleAttributeTypes = new String[0];
+ }
+
+ // set possible strings
+ Arrays.sort( possibleAttributeTypes );
+ this.possibleAttributeTypes = possibleAttributeTypes;
+
+ // set auto activation characters
+ Set<Character> characterSet = new HashSet<Character>();
+ for ( int i = 0; i < possibleAttributeTypes.length; i++ )
+ {
+ String string = possibleAttributeTypes[i];
+ for ( int k = 0; k < string.length(); k++ )
+ {
+ char ch = string.charAt( k );
+ characterSet.add( Character.toLowerCase( ch ) );
+ characterSet.add( Character.toUpperCase( ch ) );
+ }
+ }
+ autoActivationCharacters = new char[characterSet.size()];
+ int i = 0;
+ for ( Iterator<Character> it = characterSet.iterator(); it.hasNext(); )
+ {
+ Character ch = it.next();
+ autoActivationCharacters[i] = ch.charValue();
+ i++;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation always returns null.
+ */
+ public ICompletionProposal[] computeCompletionProposals( ITextViewer viewer, int offset )
+ {
+ return null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public ICompletionProposal[] computeCompletionProposals( IContentAssistSubjectControl contentAssistSubjectControl,
+ int documentOffset )
+ {
+ IDocument document = contentAssistSubjectControl.getDocument();
+ String text = document.get();
+
+ // search start of current attribute type
+ int start = 0;
+ for ( int i = documentOffset - 1; i >= 0; i-- )
+ {
+ char c = text.charAt( i );
+ if ( c == ',' || Character.isWhitespace( c ) )
+ {
+ start = i + 1;
+ break;
+ }
+ }
+ String attribute = text.substring( start, documentOffset );
+
+ // create proposal list
+ List<ICompletionProposal> proposalList = new ArrayList<ICompletionProposal>();
+ for ( int k = 0; k < possibleAttributeTypes.length; k++ )
+ {
+ if ( possibleAttributeTypes[k].toUpperCase().startsWith( attribute.toUpperCase() ) )
+ {
+ ICompletionProposal proposal = new CompletionProposal( possibleAttributeTypes[k] + ", ", start,
+ documentOffset - start, possibleAttributeTypes[k].length() + 2, null, possibleAttributeTypes[k],
+ null, null );
+ proposalList.add( proposal );
+ }
+ }
+ return proposalList.toArray( new ICompletionProposal[proposalList.size()] );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation always returns null.
+ */
+ public char[] getContextInformationAutoActivationCharacters()
+ {
+ return null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation always returns null.
+ */
+ public IContextInformation[] computeContextInformation( ITextViewer viewer, int offset )
+ {
+ return null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation always returns null.
+ */
+ public IContextInformation[] computeContextInformation( IContentAssistSubjectControl contentAssistSubjectControl,
+ int documentOffset )
+ {
+ return null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation always returns null.
+ */
+ public String getErrorMessage()
+ {
+ return null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ *
+ * This implementation always returns null.
+ */
+ public IContextInformationValidator getContextInformationValidator()
+ {
+ return null;
+ }
+
+}
Propchange: directory/sandbox/felixk/studio-ldapbrowser-common/src/main/java/org/apache/directory/studio/ldapbrowser/common/widgets/search/ReturningAttributesContentAssistProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native