Skip to content
Snippets Groups Projects
Commit 3a736e5f authored by felmer's avatar felmer
Browse files

LMS-967 Some refactorings needed for fixing a GUI bug for Phosphonetx

SVN: 11618
parent 402be833
No related branches found
No related tags found
No related merge requests found
Showing with 109 additions and 44 deletions
/*
* Copyright 2009 ETH Zuerich, CISD
*
* Licensed 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 ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field;
import java.util.LinkedHashSet;
import java.util.Set;
import com.extjs.gxt.ui.client.widget.form.TextField;
public abstract class ChosenEntitySetter<T> extends TextField<String>
{
private static final int TEXT_CHOOSER_FIELD_WIDTH = 342;
private final Set<IChosenEntityListener<T>> listeners =
new LinkedHashSet<IChosenEntityListener<T>>();
protected ChosenEntitySetter()
{
setWidth(TEXT_CHOOSER_FIELD_WIDTH);
}
public void addChosenEntityListener(IChosenEntityListener<T> listener)
{
listeners.add(listener);
}
void setChosenEntity(T entityOrNull)
{
if (entityOrNull != null)
{
setValue(renderEntity(entityOrNull));
}
for (IChosenEntityListener<T> listener : listeners)
{
listener.entityChosen(entityOrNull);
}
}
abstract String renderEntity(T entity);
}
\ No newline at end of file
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field; package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field;
import com.extjs.gxt.ui.client.event.ComponentEvent; import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.gwt.user.client.Event; import com.google.gwt.user.client.Event;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
...@@ -47,18 +46,6 @@ class EntityChooserDialog<T> extends SimpleDialog ...@@ -47,18 +46,6 @@ class EntityChooserDialog<T> extends SimpleDialog
private final IDelegatedAction onCancelAction; private final IDelegatedAction onCancelAction;
public static abstract class ChosenEntitySetter<T> extends TextField<String>
{
private static final int TEXT_CHOOSER_FIELD_WIDTH = 342;
protected ChosenEntitySetter()
{
setWidth(TEXT_CHOOSER_FIELD_WIDTH);
}
abstract void setChosenEntity(T entity);
}
public EntityChooserDialog(DisposableEntityChooser<T> entityBrowser, public EntityChooserDialog(DisposableEntityChooser<T> entityBrowser,
ChosenEntitySetter<T> chosenEntitySetter, String title, IMessageProvider messageProvider) ChosenEntitySetter<T> chosenEntitySetter, String title, IMessageProvider messageProvider)
{ {
......
...@@ -23,15 +23,14 @@ import com.extjs.gxt.ui.client.widget.button.Button; ...@@ -23,15 +23,14 @@ import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.AdapterField; import com.extjs.gxt.ui.client.widget.form.AdapterField;
import com.extjs.gxt.ui.client.widget.form.Field; import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.MultiField; import com.extjs.gxt.ui.client.widget.form.MultiField;
import com.extjs.gxt.ui.client.widget.form.TextField;
import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.ExperimentBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.experiment.ExperimentBrowserGrid;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.EntityChooserDialog.ChosenEntitySetter;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Experiment;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier;
...@@ -48,7 +47,7 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment> ...@@ -48,7 +47,7 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment>
{ {
Field<?> getField(); Field<?> getField();
TextField<String> getTextField(); ExperimentChooserField getChooserField();
Button getChooseButton(); Button getChooseButton();
...@@ -93,14 +92,14 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment> ...@@ -93,14 +92,14 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment>
return chooseButton; return chooseButton;
} }
public TextField<String> getTextField() public ExperimentChooserField getChooserField()
{ {
return chooserField; return chooserField;
} }
public ExperimentIdentifier getValue() public ExperimentIdentifier getValue()
{ {
return chooserField.identifer; return chooserField.tryGetIdentifier();
} }
public void updateOriginalValue() public void updateOriginalValue()
...@@ -137,21 +136,22 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment> ...@@ -137,21 +136,22 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment>
private final boolean mandatory; private final boolean mandatory;
private ExperimentIdentifier identifer;
@Override @Override
public void setChosenEntity(Experiment entityOrNull) public String renderEntity(Experiment entity)
{ {
if (entityOrNull != null) return print(ExperimentIdentifier.createIdentifier(entity));
{
identifer = ExperimentIdentifier.createIdentifier(entityOrNull);
setValue(identifer);
}
} }
private void setValue(ExperimentIdentifier chosenEntity) private ExperimentIdentifier tryGetIdentifier()
{ {
super.setValue(print(chosenEntity)); String ident = getValue();
if (StringUtils.isBlank(ident))
{
return null;
} else
{
return new ExperimentIdentifier(ident);
}
} }
private String print(ExperimentIdentifier chosenEntity) private String print(ExperimentIdentifier chosenEntity)
...@@ -169,10 +169,9 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment> ...@@ -169,10 +169,9 @@ public final class ExperimentChooserField extends ChosenEntitySetter<Experiment>
setRegex(EXPERIMENT_IDENTIFIER_PATTERN); setRegex(EXPERIMENT_IDENTIFIER_PATTERN);
getMessages().setRegexText(viewContext.getMessage(Dict.INCORRECT_EXPERIMENT_SYNTAX)); getMessages().setRegexText(viewContext.getMessage(Dict.INCORRECT_EXPERIMENT_SYNTAX));
identifer = initialValueOrNull;
if (initialValueOrNull != null) if (initialValueOrNull != null)
{ {
setValue(initialValueOrNull); super.setValue(print(initialValueOrNull));
} }
} }
......
/*
* Copyright 2009 ETH Zuerich, CISD
*
* Licensed 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 ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field;
/**
*
*
* @author Franz-Josef Elmer
*/
public interface IChosenEntityListener<T>
{
public void entityChosen(T entity);
}
...@@ -27,7 +27,6 @@ import com.extjs.gxt.ui.client.widget.form.MultiField; ...@@ -27,7 +27,6 @@ import com.extjs.gxt.ui.client.widget.form.MultiField;
import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.EntityChooserDialog.ChosenEntitySetter;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.material.MaterialBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.material.MaterialBrowserGrid;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil;
...@@ -85,13 +84,10 @@ public final class MaterialChooserField extends ChosenEntitySetter<Material> ...@@ -85,13 +84,10 @@ public final class MaterialChooserField extends ChosenEntitySetter<Material>
private final boolean mandatory; private final boolean mandatory;
@Override @Override
public void setChosenEntity(Material materialOrNull) public String renderEntity(Material materialOrNull)
{ {
if (materialOrNull != null) MaterialIdentifier chosenMaterial = createIdentifier(materialOrNull);
{ return chosenMaterial.print();
MaterialIdentifier chosenMaterial = createIdentifier(materialOrNull);
super.setValue(chosenMaterial.print());
}
} }
private static MaterialIdentifier createIdentifier(Material material) private static MaterialIdentifier createIdentifier(Material material)
......
...@@ -27,7 +27,6 @@ import com.extjs.gxt.ui.client.widget.form.MultiField; ...@@ -27,7 +27,6 @@ import com.extjs.gxt.ui.client.widget.form.MultiField;
import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.EntityChooserDialog.ChosenEntitySetter;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.DisposableEntityChooser;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.sample.SampleBrowserGrid;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil;
...@@ -116,12 +115,9 @@ public final class SampleChooserField extends ChosenEntitySetter<Sample> ...@@ -116,12 +115,9 @@ public final class SampleChooserField extends ChosenEntitySetter<Sample>
private final boolean mandatory; private final boolean mandatory;
@Override @Override
public void setChosenEntity(Sample entityOrNull) public String renderEntity(Sample entityOrNull)
{ {
if (entityOrNull != null) return entityOrNull.getIdentifier();
{
setValue(entityOrNull.getIdentifier());
}
} }
public SampleChooserField(boolean mandatory, String initialValueOrNull, public SampleChooserField(boolean mandatory, String initialValueOrNull,
......
...@@ -37,7 +37,13 @@ abstract public class AbstractSimpleBrowserGrid<T/* Entity */> extends ...@@ -37,7 +37,13 @@ abstract public class AbstractSimpleBrowserGrid<T/* Entity */> extends
protected AbstractSimpleBrowserGrid(IViewContext<ICommonClientServiceAsync> viewContext, protected AbstractSimpleBrowserGrid(IViewContext<ICommonClientServiceAsync> viewContext,
String browserId, String gridId) String browserId, String gridId)
{ {
super(viewContext, gridId, false, true); this(viewContext, browserId, gridId, true);
}
protected AbstractSimpleBrowserGrid(IViewContext<ICommonClientServiceAsync> viewContext,
String browserId, String gridId, boolean refreshAutomatically)
{
super(viewContext, gridId, false, refreshAutomatically);
setId(browserId); setId(browserId);
updateDefaultRefreshButton(); updateDefaultRefreshButton();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment