]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.ui/src/org/simantics/document/ui/contribution/NameInputValidator.java
Externalize strings in org.simantics.document.ui
[simantics/platform.git] / bundles / org.simantics.document.ui / src / org / simantics / document / ui / contribution / NameInputValidator.java
1 package org.simantics.document.ui.contribution;
2
3 import java.util.Collection;
4
5 import org.eclipse.jface.dialogs.IInputValidator;
6 import org.eclipse.osgi.util.NLS;
7 import org.simantics.Simantics;
8 import org.simantics.browsing.ui.swt.widgets.impl.Widget;
9 import org.simantics.db.ReadGraph;
10 import org.simantics.db.Resource;
11 import org.simantics.db.exception.DatabaseException;
12 import org.simantics.db.management.ISessionContext;
13 import org.simantics.db.request.Read;
14 import org.simantics.layer0.Layer0;
15 import org.simantics.utils.ui.AdaptionUtils;
16
17 public class NameInputValidator implements IInputValidator, Widget {
18         
19         private Resource selection;
20         
21         @Override
22         public String isValid(final String newText) {
23                 if (newText == null || newText.length() == 0)
24                         return Messages.NameInputValidator_EmptyNameNotAllowed;
25                 if (selection != null) {
26                         try {
27                                 return Simantics.getSession().syncRequest(new Read<String>() {
28                                         @Override
29                                         public String perform(ReadGraph graph) throws DatabaseException {
30                                                 Layer0 l0 = Layer0.getInstance(graph);
31                                                 Resource lib = graph.getPossibleObject(selection, l0.PartOf);
32                                                 if (lib == null)
33                                                         return null;
34                                                 Collection<Resource> resources = graph.getObjects(lib, l0.ConsistsOf);
35                                                 for (Resource resource : resources) {
36                                                         if (resource.equals(selection))
37                                                                 continue;
38                                                         String n = graph.getPossibleRelatedValue(resource, l0.HasName);
39                                                         if (newText.equals(n))
40                                                                 return NLS.bind(Messages.NameInputValidator_CannotHaveDuplicateName, newText);
41                                                 }
42                                                 return null;
43                                         }
44                                 });
45                         } catch (DatabaseException e) {
46                                 return e.getMessage();
47                         }
48                 }
49                 return null;
50         }
51         
52         @Override
53         public void setInput(ISessionContext context, Object input) {
54                 selection = AdaptionUtils.adaptToSingle(input, Resource.class);
55                 
56         }
57
58 }