Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. package org.kie.workbench.common.screens.projecteditor.client.handlers;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. import javax.annotation.PostConstruct;
  6. import javax.enterprise.context.ApplicationScoped;
  7. import javax.inject.Inject;
  8.  
  9. import com.google.gwt.core.client.Callback;
  10. import com.google.gwt.user.client.ui.Image;
  11. import com.google.gwt.user.client.ui.IsWidget;
  12. import org.guvnor.common.services.project.context.ProjectContext;
  13. import org.guvnor.common.services.project.model.Package;
  14. import org.guvnor.structure.client.validation.ValidatorWithReasonCallback;
  15. import org.guvnor.structure.repositories.Repository;
  16. import org.jboss.errai.common.client.api.Caller;
  17. import org.jboss.errai.common.client.api.RemoteCallback;
  18. import org.kie.uberfire.client.common.popups.errors.ErrorPopup;
  19. import org.kie.workbench.common.screens.projecteditor.client.resources.ProjectEditorResources;
  20. import org.kie.workbench.common.screens.projecteditor.client.wizard.NewProjectWizard;
  21. import org.kie.workbench.common.services.shared.validation.ValidationService;
  22.  
  23. import org.kie.workbench.common.widgets.client.handlers.NewResourceHandler;
  24. import org.kie.workbench.common.widgets.client.handlers.NewResourcePresenter;
  25. import org.kie.workbench.common.widgets.client.handlers.PathLabel;
  26. import org.kie.workbench.common.widgets.client.resources.i18n.CommonConstants;
  27.  
  28. import org.uberfire.commons.data.Pair;
  29. import org.uberfire.workbench.type.AnyResourceTypeDefinition;
  30. import org.uberfire.workbench.type.ResourceTypeDefinition;
  31.  
  32. /**
  33. * Handler for the creation of new Projects
  34. */
  35. @ApplicationScoped
  36. public class NewProjectHandler
  37. implements NewResourceHandler {
  38.  
  39. private final List<Pair<String, ? extends IsWidget>> extensions = new LinkedList<Pair<String, ? extends IsWidget>>();
  40.  
  41. private final PathLabel pathLabel = new PathLabel();
  42.  
  43. @Inject
  44. private Caller<ValidationService> validationService;
  45.  
  46. @Inject
  47. //We don't really need this for Packages but it's required by DefaultNewResourceHandler
  48. private AnyResourceTypeDefinition resourceType;
  49.  
  50. @Inject
  51. private ProjectContext context;
  52.  
  53. @Inject
  54. private NewProjectWizard wizard;
  55.  
  56. @PostConstruct
  57. private void setupExtensions() {
  58. this.extensions.add( Pair.newPair( CommonConstants.INSTANCE.ItemPathSubheading(),
  59. pathLabel ) );
  60. }
  61.  
  62. @Override
  63. public List<Pair<String, ? extends IsWidget>> getExtensions() {
  64. final Repository activeRepository = context.getActiveRepository();
  65. this.pathLabel.setPath( ( activeRepository == null ? null : activeRepository.getRoot() ) );
  66. return this.extensions;
  67. }
  68.  
  69. @Override
  70. public String getDescription() {
  71. return ProjectEditorResources.CONSTANTS.newProjectDescription();
  72. }
  73.  
  74. @Override
  75. public IsWidget getIcon() {
  76. return new Image( ProjectEditorResources.INSTANCE.newProjectIcon() );
  77. }
  78.  
  79. @Override
  80. public ResourceTypeDefinition getResourceType() {
  81. return resourceType;
  82. }
  83.  
  84. @Override
  85. public void create( final Package pkg,
  86. final String projectName,
  87. final NewResourcePresenter presenter ) {
  88. if ( context.getActiveRepository() != null ) {
  89. wizard.setContent( projectName );
  90. wizard.start();
  91. presenter.complete();
  92.  
  93. } else {
  94. ErrorPopup.showMessage( ProjectEditorResources.CONSTANTS.NoRepositorySelectedPleaseSelectARepository() );
  95. }
  96. }
  97.  
  98. @Override
  99. public void validate( final String projectName,
  100. final ValidatorWithReasonCallback callback ) {
  101. if ( pathLabel.getPath() == null ) {
  102. ErrorPopup.showMessage( CommonConstants.INSTANCE.MissingPath() );
  103. callback.onFailure();
  104. return;
  105. }
  106.  
  107. validationService.call( new RemoteCallback<Boolean>() {
  108. @Override
  109. public void callback( final Boolean response ) {
  110. if ( Boolean.TRUE.equals( response ) ) {
  111. callback.onSuccess();
  112. } else {
  113. callback.onFailure( CommonConstants.INSTANCE.InvalidFileName0( projectName ) );
  114. }
  115. }
  116. } ).isProjectNameValid( projectName );
  117. }
  118.  
  119. @Override
  120. public void acceptContext( final ProjectContext context,
  121. final Callback<Boolean, Void> response ) {
  122. //You can always create a new Project (provided a repository has been selected)
  123.  
  124. response.onSuccess( context.getActiveRepository() != null );
  125. }
  126.  
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement