Handle 'Event.ONPASTE' in CreateProjectScreen

Let CreateProjectScreen have the same style with CreateGroupScreen, init
"Create Project" button in disable status, support pasting with right mouse
click and "paste" project name from the context menu into the input field and
enable the "Create Project" button.

Bug: issue 1843
Change-Id: I7c3ac29e264199909b23c0b4bf15c6383930ccf6
This commit is contained in:
Bruce Zu
2013-05-07 15:47:48 +08:00
committed by David Pursehouse
parent bd4e609c3d
commit 7ffd3adf6e

View File

@@ -27,6 +27,7 @@ import com.google.gerrit.client.projects.ProjectInfo;
import com.google.gerrit.client.projects.ProjectMap;
import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gerrit.client.ui.HintTextBox;
import com.google.gerrit.client.ui.OnEditEnabler;
import com.google.gerrit.client.ui.ProjectListPopup;
import com.google.gerrit.client.ui.ProjectNameSuggestOracle;
import com.google.gerrit.client.ui.ProjectsTable;
@@ -34,11 +35,14 @@ import com.google.gerrit.client.ui.Screen;
import com.google.gerrit.common.PageLinks;
import com.google.gerrit.common.ProjectUtil;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
@@ -110,8 +114,8 @@ public class CreateProjectScreen extends Screen {
final VerticalPanel fp = new VerticalPanel();
fp.setStyleName(Gerrit.RESOURCES.css().createProjectPanel());
initCreateTxt();
initCreateButton();
initCreateTxt();
initParentBox();
addGrid(fp);
@@ -129,7 +133,23 @@ public class CreateProjectScreen extends Screen {
}
private void initCreateTxt() {
project = new NpTextBox();
project = new NpTextBox() {
@Override
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
if (event.getTypeInt() == Event.ONPASTE) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
if (project.getValue().trim().length() != 0) {
create.setEnabled(true);
}
}
});
}
}
};
project.sinkEvents(Event.ONPASTE);
project.setVisibleLength(50);
project.addKeyPressHandler(new KeyPressHandler() {
@Override
@@ -139,10 +159,12 @@ public class CreateProjectScreen extends Screen {
}
}
});
new OnEditEnabler(create, project);
}
private void initCreateButton() {
create = new Button(Util.C.buttonCreateProject());
create.setEnabled(false);
create.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {