Revision 1aa951e9
Added by Andreas Kohlbecker almost 7 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java | ||
---|---|---|
125 | 125 |
TransactionStatus tx = getRepo().startTransaction(false); |
126 | 126 |
Reference reference = getRepo().getReferenceService().find(editorAction.getEntityId()); |
127 | 127 |
ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class); |
128 |
popup.withDeleteButton(true); |
|
128 | 129 |
popup.showInEditor(reference); |
129 | 130 |
getRepo().commitTransaction(tx); |
130 | 131 |
} |
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationPopupEditor.java | ||
---|---|---|
11 | 11 |
import java.util.Arrays; |
12 | 12 |
import java.util.Collection; |
13 | 13 |
|
14 |
import org.springframework.beans.factory.annotation.Autowired; |
|
15 |
import org.springframework.context.annotation.Scope; |
|
16 | 14 |
import org.springframework.security.core.GrantedAuthority; |
17 | 15 |
|
18 |
import com.vaadin.spring.annotation.SpringComponent; |
|
19 | 16 |
import com.vaadin.ui.DateField; |
20 | 17 |
import com.vaadin.ui.FormLayout; |
21 | 18 |
import com.vaadin.ui.ListSelect; |
... | ... | |
25 | 22 |
import eu.etaxonomy.cdm.model.common.User; |
26 | 23 |
import eu.etaxonomy.cdm.model.name.Registration; |
27 | 24 |
import eu.etaxonomy.cdm.model.name.RegistrationStatus; |
28 |
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory; |
|
29 | 25 |
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView; |
30 | 26 |
import eu.etaxonomy.cdm.vaadin.util.converter.JodaDateTimeConverter; |
31 | 27 |
import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor; |
... | ... | |
35 | 31 |
* @since May 15, 2017 |
36 | 32 |
* |
37 | 33 |
*/ |
38 |
@SpringComponent |
|
39 |
@Scope("prototype") |
|
40 | 34 |
public class RegistrationPopupEditor extends AbstractCdmPopupEditor<Registration, RegistrationEditorPresenter> |
41 | 35 |
implements RegistrationPopEditorView, AccessRestrictedView { |
42 | 36 |
|
43 | 37 |
private static final long serialVersionUID = 5418275817834009509L; |
44 | 38 |
|
45 |
@Autowired |
|
46 |
private SelectFieldFactory selectFieldFactory; |
|
47 | 39 |
|
48 | 40 |
TextField identifierField; |
49 | 41 |
TextField specificIdentifierField; |
src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkflowPresenter.java | ||
---|---|---|
130 | 130 |
Reference reference = getRepo().getReferenceService().find(event.getEntityId()); |
131 | 131 |
ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class); |
132 | 132 |
popup.showInEditor(reference); |
133 |
popup.withDeleteButton(true); |
|
133 | 134 |
getRepo().commitTransaction(tx); |
134 | 135 |
} |
135 | 136 |
|
... | ... | |
148 | 149 |
TaxonNameBase taxonName = getRepo().getNameService().find(event.getEntityId()); |
149 | 150 |
TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class); |
150 | 151 |
popup.showInEditor(taxonName); |
152 |
popup.withDeleteButton(true); |
|
151 | 153 |
getRepo().commitTransaction(tx); |
152 | 154 |
} |
153 | 155 |
|
src/main/java/eu/etaxonomy/cdm/vaadin/view/taxon/TaxonNamePopupEditor.java | ||
---|---|---|
10 | 10 |
|
11 | 11 |
import java.util.Collection; |
12 | 12 |
|
13 |
import org.springframework.beans.factory.annotation.Autowired; |
|
14 |
import org.springframework.context.annotation.Scope; |
|
15 | 13 |
import org.springframework.security.core.GrantedAuthority; |
16 | 14 |
|
17 |
import com.vaadin.spring.annotation.SpringComponent; |
|
18 | 15 |
import com.vaadin.ui.Alignment; |
19 | 16 |
import com.vaadin.ui.GridLayout; |
20 | 17 |
import com.vaadin.ui.ListSelect; |
... | ... | |
23 | 20 |
import eu.etaxonomy.cdm.model.name.Rank; |
24 | 21 |
import eu.etaxonomy.cdm.model.name.TaxonNameBase; |
25 | 22 |
import eu.etaxonomy.cdm.persistence.query.OrderHint; |
26 |
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory; |
|
27 | 23 |
import eu.etaxonomy.cdm.vaadin.component.common.TeamOrPersonField; |
28 | 24 |
import eu.etaxonomy.cdm.vaadin.security.AccessRestrictedView; |
29 | 25 |
import eu.etaxonomy.vaadin.component.SwitchableTextField; |
... | ... | |
34 | 30 |
* @since May 22, 2017 |
35 | 31 |
* |
36 | 32 |
*/ |
37 |
@SpringComponent |
|
38 |
@Scope("prototype") |
|
39 | 33 |
public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonNameBase, TaxonNameEditorPresenter> implements TaxonNamePopupEditorView, AccessRestrictedView { |
40 | 34 |
|
41 | 35 |
private static final long serialVersionUID = -7037436241474466359L; |
42 | 36 |
|
43 |
@Autowired |
|
44 |
private SelectFieldFactory selectFieldFactory; |
|
45 |
|
|
46 | 37 |
private final static int GRID_COLS = 4; |
47 | 38 |
|
48 | 39 |
private final static int GRID_ROWS = 7; |
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmPopupEditor.java | ||
---|---|---|
21 | 21 |
import com.vaadin.ui.themes.ValoTheme; |
22 | 22 |
|
23 | 23 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
24 |
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory; |
|
25 |
import eu.etaxonomy.vaadin.ui.view.PopupEditorFactory; |
|
24 | 26 |
|
25 | 27 |
/** |
26 | 28 |
* @author a.kohlbecker |
... | ... | |
38 | 40 |
|
39 | 41 |
private Button advancedModeButton; |
40 | 42 |
|
43 |
/** |
|
44 |
* set by the {@link PopupEditorFactory} |
|
45 |
*/ |
|
46 |
protected SelectFieldFactory selectFieldFactory; |
|
47 |
|
|
41 | 48 |
/** |
42 | 49 |
* @param layout |
43 | 50 |
* @param dtoType |
src/main/java/eu/etaxonomy/vaadin/mvp/AbstractPopupEditor.java | ||
---|---|---|
53 | 53 |
import eu.etaxonomy.vaadin.ui.view.DoneWithPopupEvent.Reason; |
54 | 54 |
|
55 | 55 |
/** |
56 |
* |
|
57 |
* Optional with a delete button which can be enabled with {@link #withDeleteButton(boolean)} |
|
58 |
* |
|
56 | 59 |
* @author a.kohlbecker |
57 | 60 |
* @since Apr 5, 2017 |
58 | 61 |
* |
... | ... | |
120 | 123 |
delete = new Button("Delete", FontAwesome.REMOVE); |
121 | 124 |
delete.setStyleName(ValoTheme.BUTTON_DANGER); |
122 | 125 |
delete.addClickListener(e -> delete()); |
126 |
delete.setVisible(false); |
|
123 | 127 |
|
124 | 128 |
buttonLayout.addComponents(delete, save, cancel); |
125 |
buttonLayout.setExpandRatio(delete, 1); |
|
129 |
// delete is initially invisible, let save take all space |
|
130 |
buttonLayout.setExpandRatio(save, 1); |
|
126 | 131 |
buttonLayout.setComponentAlignment(delete, Alignment.TOP_RIGHT); |
127 | 132 |
buttonLayout.setComponentAlignment(save, Alignment.TOP_RIGHT); |
128 | 133 |
buttonLayout.setComponentAlignment(cancel, Alignment.TOP_RIGHT); |
... | ... | |
491 | 496 |
} |
492 | 497 |
|
493 | 498 |
|
499 |
public void withDeleteButton(boolean withDelete){ |
|
500 |
|
|
501 |
if(withDelete){ |
|
502 |
buttonLayout.setExpandRatio(save, 0); |
|
503 |
buttonLayout.setExpandRatio(delete, 1); |
|
504 |
} else { |
|
505 |
buttonLayout.setExpandRatio(save, 1); |
|
506 |
buttonLayout.setExpandRatio(delete, 0); |
|
507 |
} |
|
508 |
delete.setVisible(withDelete); |
|
509 |
} |
|
510 |
|
|
494 | 511 |
|
495 | 512 |
// ------------------------ data binding ------------------------ // |
496 | 513 |
|
src/main/java/eu/etaxonomy/vaadin/ui/view/PopupEditorFactory.java | ||
---|---|---|
23 | 23 |
import com.vaadin.spring.annotation.UIScope; |
24 | 24 |
|
25 | 25 |
import eu.etaxonomy.cdm.api.application.CdmRepository; |
26 |
import eu.etaxonomy.cdm.vaadin.component.SelectFieldFactory; |
|
27 |
import eu.etaxonomy.vaadin.mvp.AbstractCdmPopupEditor; |
|
26 | 28 |
import eu.etaxonomy.vaadin.mvp.AbstractEditorPresenter; |
27 | 29 |
import eu.etaxonomy.vaadin.mvp.AbstractPopupEditor; |
28 | 30 |
import eu.etaxonomy.vaadin.mvp.AbstractPresenter; |
... | ... | |
46 | 48 |
@Qualifier("cdmRepository") |
47 | 49 |
private CdmRepository repo; |
48 | 50 |
|
51 |
@Autowired |
|
52 |
private SelectFieldFactory selectFieldFactory; |
|
53 |
|
|
49 | 54 |
@Autowired |
50 | 55 |
@Lazy |
51 | 56 |
private NavigationManager navigationManager; |
... | ... | |
59 | 64 |
|
60 | 65 |
private Method viewInitMethod; |
61 | 66 |
|
67 |
private Field selectFieldFactoryField; |
|
68 |
|
|
62 | 69 |
public PopupEditorFactory(){ |
63 | 70 |
initFieldsAccess(); |
64 | 71 |
} |
... | ... | |
88 | 95 |
viewInitMethod = AbstractView.class.getDeclaredMethod("init"); |
89 | 96 |
viewInitMethod.setAccessible(true); |
90 | 97 |
|
98 |
selectFieldFactoryField = AbstractCdmPopupEditor.class.getDeclaredField("selectFieldFactory"); |
|
99 |
selectFieldFactoryField.setAccessible(true); |
|
100 |
|
|
91 | 101 |
} catch (NoSuchFieldException | SecurityException | NoSuchMethodException e) { |
92 | 102 |
throw new RuntimeException("Severe error during initialization. Please check the classes AbstractPresenter, AbstractEditorPresenter, AbstractView for modificactions.", e); |
93 | 103 |
} |
... | ... | |
119 | 129 |
viewEventBusField.set(abstractView, eventBus); |
120 | 130 |
viewInjectPresenterMethod.invoke(abstractView, presenter); |
121 | 131 |
// invoke the @PostConstruct method |
132 |
|
|
133 |
if(AbstractCdmPopupEditor.class.isAssignableFrom(popupViewClass)){ |
|
134 |
selectFieldFactoryField.set(view, selectFieldFactory); |
|
135 |
} |
|
136 |
|
|
122 | 137 |
viewInitMethod.invoke(abstractView); |
123 | 138 |
} |
124 | 139 |
return view; |
Also available in: Unified diff
ref #6169 Delete button in editors optional