package edu.washington.cs.oneswarm.ui.gwt.client.newui.settings; import java.util.ArrayList; import java.util.List; 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.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; import edu.washington.cs.oneswarm.ui.gwt.client.OneSwarmRPCClient; import edu.washington.cs.oneswarm.ui.gwt.client.newui.HelpButton; public class TagsSettingsPanel extends SettingsPanel { private final List<SettingsCheckBox> checkBoxes = new ArrayList<SettingsCheckBox>(); private final TextBox mMaxVisibleTags = new TextBox(); TagsSettingsPanel() { Grid g = new Grid(4, 1); final SettingsCheckBox showTagsCheckbox = new SettingsCheckBox( msg.settings_interface_tags_show(), "oneswarm.show.tags"); checkBoxes.add(showTagsCheckbox); final SettingsCheckBox id3Checkbox = new SettingsCheckBox( msg.settings_interface_tags_auto_audio(), "oneswarm.add.id3.tags"); checkBoxes.add(id3Checkbox); final SettingsCheckBox directoryCheckbox = new SettingsCheckBox( msg.settings_interface_tags_auto_path(), "oneswarm.directory.tags"); checkBoxes.add(directoryCheckbox); for (int row = 0; row < checkBoxes.size(); row++) { g.setWidget(row, 0, checkBoxes.get(row)); } OneSwarmRPCClient.getService().getIntegerParameterValue(OneSwarmRPCClient.getSessionID(), "oneswarm.max.ui.tags", new AsyncCallback<Integer>() { public void onFailure(Throwable caught) { caught.printStackTrace(); } public void onSuccess(Integer result) { mMaxVisibleTags.setText(result.toString()); mMaxVisibleTags.setEnabled(true); loadNotify(); } }); mMaxVisibleTags.setEnabled(false); mMaxVisibleTags.addKeyPressHandler(new KeyPressHandler() { public void onKeyPress(KeyPressEvent event) { char keyCode = event.getCharCode(); if ((!Character.isDigit(keyCode)) && (keyCode != (char) KeyCodes.KEY_TAB) && (keyCode != (char) KeyCodes.KEY_BACKSPACE) && (keyCode != (char) KeyCodes.KEY_DELETE) && (keyCode != (char) KeyCodes.KEY_ENTER) && (keyCode != (char) KeyCodes.KEY_HOME) && (keyCode != (char) KeyCodes.KEY_END) && (keyCode != (char) KeyCodes.KEY_LEFT) && (keyCode != (char) KeyCodes.KEY_UP) && (keyCode != (char) KeyCodes.KEY_RIGHT) && (keyCode != (char) KeyCodes.KEY_DOWN)) { // TextBox.cancelKey() suppresses the current keyboard // event. mMaxVisibleTags.cancelKey(); } } }); HorizontalPanel hp = new HorizontalPanel(); Label l = new Label(msg.settings_interface_tags_max_display()); hp.add(l); hp.add(mMaxVisibleTags); HelpButton hb = new HelpButton(msg.settings_interface_tags_max_display_help()); hp.add(hb); hp.setCellVerticalAlignment(l, VerticalPanel.ALIGN_MIDDLE); hp.setCellVerticalAlignment(mMaxVisibleTags, VerticalPanel.ALIGN_MIDDLE); hp.setCellVerticalAlignment(hb, VerticalPanel.ALIGN_MIDDLE); g.setWidget(3, 0, hp); super.add(g); } public void sync() { for (SettingsCheckBox c : checkBoxes) { c.save(); } int maxTags = 300; try { maxTags = Integer.parseInt(mMaxVisibleTags.getText()); } catch (Exception e) { e.printStackTrace(); } OneSwarmRPCClient.getService().setIntegerParameterValue(OneSwarmRPCClient.getSessionID(), "oneswarm.max.ui.tags", maxTags, new AsyncCallback<Void>() { public void onFailure(Throwable caught) { caught.printStackTrace(); } public void onSuccess(Void result) { ; // success } }); } public String validData() { return null; // checkboxes are always valid } }