Repository: openmeetings Updated Branches: refs/heads/master e02ba1131 -> b3bd1a68d
[OPENMEETINGS-1714] more issues are fixed Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b3bd1a68 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b3bd1a68 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b3bd1a68 Branch: refs/heads/master Commit: b3bd1a68d5dd3b6a1a1c276911ebc8e46de8e9a3 Parents: e02ba11 Author: Maxim Solodovnik <[email protected]> Authored: Wed Oct 4 16:53:13 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Wed Oct 4 16:53:13 2017 +0700 ---------------------------------------------------------------------- .../converter/InterviewConverterTask.java | 4 +- .../converter/RecordingConverterTask.java | 4 +- .../screenshare/gui/ScreenSharerFrame.java | 10 ++-- .../apache/openmeetings/web/common/Captcha.java | 28 +++++----- .../web/pages/install/InstallWizard.java | 54 +++++++++++--------- .../web/room/menu/RoomMenuPanel.java | 6 ++- .../web/room/poll/PollResultsDialog.java | 44 ++++++++-------- .../web/room/wb/WbWebSocketHelper.java | 9 ++-- .../web/user/calendar/AppointmentDialog.java | 8 +-- .../web/user/profile/UserSearchPanel.java | 5 +- .../openmeetings/web/user/rooms/RoomsPanel.java | 25 +++------ 11 files changed, 97 insertions(+), 100 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/InterviewConverterTask.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/InterviewConverterTask.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/InterviewConverterTask.java index 079a6ce..e033af9 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/InterviewConverterTask.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/InterviewConverterTask.java @@ -40,9 +40,7 @@ public class InterviewConverterTask { try { log.debug("[-1-]" + taskExecutor); - taskExecutor.execute(() -> { - interviewConverter.startConversion(recordingId); - }); + taskExecutor.execute(() -> interviewConverter.startConversion(recordingId)); } catch (Exception err) { log.error("[startConversionThread]", err); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/RecordingConverterTask.java ---------------------------------------------------------------------- diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/RecordingConverterTask.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/RecordingConverterTask.java index 9cc1c9f..1fcb408 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/RecordingConverterTask.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/converter/RecordingConverterTask.java @@ -40,9 +40,7 @@ public class RecordingConverterTask { try { log.debug("[-1-]" + taskExecutor); - taskExecutor.execute(() -> { - recordingConverter.startConversion(recordingId); - }); + taskExecutor.execute(() -> recordingConverter.startConversion(recordingId)); } catch (Exception err) { log.error("[startConversionThread]", err); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java index a7457b3..2ba3cd1 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java @@ -136,6 +136,11 @@ public class ScreenSharerFrame extends JFrame { setColumns(10); } + + private void updatePublishURL() { + lblPublishURL.setText("rtmp://" + textPublishHost.getText() + ":1935/" + + textPublishApp.getText() + "/" + textPublishId.getText()); + } } private static class KeyValue<T> { @@ -657,11 +662,6 @@ public class ScreenSharerFrame extends JFrame { return textPublishId.getText(); } - private void updatePublishURL() { - lblPublishURL.setText("rtmp://" + textPublishHost.getText() + ":1935/" - + textPublishApp.getText() + "/" + textPublishId.getText()); - } - public void setShowWarning(boolean showWarning) { this.showWarning = showWarning; } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java index 4dfd288..27550ee 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java @@ -40,10 +40,10 @@ import com.googlecode.wicket.jquery.ui.markup.html.link.AjaxLink; public class Captcha extends Panel { private static final long serialVersionUID = 1L; - private static Random rnd = new Random(); private String randomText; private final CaptchaImageResource captchaImageResource = new CaptchaImageResource() { private static final long serialVersionUID = 1L; + private Random rnd = new Random(); @Override protected byte[] render() { @@ -51,6 +51,19 @@ public class Captcha extends Panel { getChallengeIdModel().setObject(randomText); return super.render(); } + + private int randomInt(int min, int max) { + return rnd.nextInt(max - min) + min; + } + + private String randomString(int min, int max) { + int num = randomInt(min, max); + byte b[] = new byte[num]; + for (int i = 0; i < num; ++i) { + b[i] = (byte)randomInt('a', 'z'); + } + return new String(b, UTF_8); + } }; private final Image captcha = new Image("captcha", captchaImageResource); private final RequiredTextField<String> captchaText = new RequiredTextField<>("captchaText", Model.of("")); @@ -91,19 +104,6 @@ public class Captcha extends Panel { }); } - private static int randomInt(int min, int max) { - return rnd.nextInt(max - min) + min; - } - - private static String randomString(int min, int max) { - int num = randomInt(min, max); - byte b[] = new byte[num]; - for (int i = 0; i < num; ++i) { - b[i] = (byte)randomInt('a', 'z'); - } - return new String(b, UTF_8); - } - public Image refresh(IPartialPageRequestHandler handler) { captchaImageResource.invalidate(); captchaText.setModelObject(""); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java index 5d582c2..cde71f8 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java @@ -157,18 +157,6 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { return false; } - private static String getPath(String _path, String app) { - StringBuilder path = new StringBuilder(); - if (!Strings.isEmpty(_path)) { - path.append(_path); - if (!_path.endsWith(File.separator)) { - path.append(File.separator); - } - } - path.append(app); - return path.toString(); - } - private abstract class BaseStep extends DynamicWizardStep { private static final long serialVersionUID = 1L; @@ -230,7 +218,10 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { return object.name(); } }); - { + + @Override + protected void onInitialize() { + super.onInitialize(); add(db.add(new OnChangeAjaxBehavior() { private static final long serialVersionUID = 1L; @@ -499,39 +490,44 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { private final TextField<String> soxPath; private final TextField<String> officePath; private boolean isAllChecked = false; + public ParamsStep3() { super(paramsStep2); + add(imageMagicPath = new TextField<>("imageMagicPath")); + add(ffmpegPath = new TextField<>("ffmpegPath")); + add(soxPath = new TextField<>("soxPath")); + add(officePath = new TextField<>("officePath")); + } + @Override + protected void onInitialize() { + super.onInitialize(); add(new TextField<Integer>("docDpi").setRequired(true).add(range(50, 600))); add(new TextField<Integer>("docQuality").setRequired(true).add(range(1, 100))); - add(imageMagicPath = new TextField<>("imageMagicPath")); add(new AjaxButton("validateImageMagic") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target) { - checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + EXEC_EXT), "-version"}); + checkToolPath(imageMagicPath, new String[] {getToolPath(imageMagicPath.getValue(), "convert" + EXEC_EXT), "-version"}); target.add(getFeedbackPanel()); } }); - add(ffmpegPath = new TextField<>("ffmpegPath")); add(new AjaxButton("validateFfmpeg") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target) { - checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + EXEC_EXT), "-version"}); + checkToolPath(ffmpegPath, new String[] {getToolPath(ffmpegPath.getValue(), "ffmpeg" + EXEC_EXT), "-version"}); target.add(getFeedbackPanel()); } }); - add(soxPath = new TextField<>("soxPath")); add(new AjaxButton("validateSox") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target) { - checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + EXEC_EXT), "--version"}); + checkToolPath(soxPath, new String[] {getToolPath(soxPath.getValue(), "sox" + EXEC_EXT), "--version"}); target.add(getFeedbackPanel()); } }); - add(officePath = new TextField<>("officePath")); add(new AjaxButton("validateOffice") { private static final long serialVersionUID = 1L; @Override @@ -576,9 +572,9 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { } private boolean checkAllPath() { - boolean result = checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + EXEC_EXT), "-version"}); - result = checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + EXEC_EXT), "-version"}) && result; - result = checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + EXEC_EXT), "--version"}) && result; + boolean result = checkToolPath(imageMagicPath, new String[] {getToolPath(imageMagicPath.getValue(), "convert" + EXEC_EXT), "-version"}); + result = checkToolPath(ffmpegPath, new String[] {getToolPath(ffmpegPath.getValue(), "ffmpeg" + EXEC_EXT), "-version"}) && result; + result = checkToolPath(soxPath, new String[] {getToolPath(soxPath.getValue(), "sox" + EXEC_EXT), "--version"}) && result; result = checkOfficePath() && result; isAllChecked = true; return result; @@ -606,6 +602,18 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> { public IDynamicWizardStep last() { return installStep; } + + private String getToolPath(String _path, String app) { + StringBuilder path = new StringBuilder(); + if (!Strings.isEmpty(_path)) { + path.append(_path); + if (!_path.endsWith(File.separator)) { + path.append(File.separator); + } + } + path.append(app); + return path.toString(); + } } private final class ParamsStep4 extends BaseStep { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java index a0ac158..b3c78e2 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java @@ -82,10 +82,14 @@ public class RoomMenuPanel extends Panel { private static final FastDateFormat df = FastDateFormat.getInstance("dd.MM.yyyy HH:mm"); private final OmButton askBtn = new OmButton("ask") { private static final long serialVersionUID = 1L; - { + + @Override + protected void onInitialize() { + super.onInitialize(); setOutputMarkupPlaceholderTag(true); setVisible(false); } + @Override public void onClick(AjaxRequestTarget target) { Client c = room.getClient(); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java index fdabd91..a181685 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java @@ -237,28 +237,6 @@ public class PollResultsDialog extends AbstractDialog<RoomPoll> { return values; } - private static PieChart<Integer> pieChart(RoomPoll p) { - PieChart<Integer> pieChart = new PieChart<>(null); - String[] ticks = getTicks(p); - Integer[] values = getValues(p); - for (int i = 0; i < values.length; ++i) { - pieChart.addValue(ticks[i], values[i]); - } - - pieChart.getSeriesDefaults().setRendererOptions(new RendererOptions().setHighlightMouseDown(true) - .setShowDataLabels(true).setFill(false).setSliceMargin(4).setLineWidth(5)); - - Highlighter h = new Highlighter(); - h.setShow(true); - h.setFormatString("%s, %P"); - h.setTooltipLocation(Location.ne); - h.setShowTooltip(true); - h.setUseAxesFormatters(false); - - pieChart.getChartConfiguration().setLegend(null).setHighlighter(h); - return pieChart; - } - private static BarChart<Integer> barChart(RoomPoll p) { String[] ticks = getTicks(p); BarChart<Integer> barChart = new BarChart<>(null); @@ -377,5 +355,27 @@ public class PollResultsDialog extends AbstractDialog<RoomPoll> { count.detach(); super.onDetach(); } + + private PieChart<Integer> pieChart(RoomPoll p) { + PieChart<Integer> pieChart = new PieChart<>(null); + String[] ticks = getTicks(p); + Integer[] values = getValues(p); + for (int i = 0; i < values.length; ++i) { + pieChart.addValue(ticks[i], values[i]); + } + + pieChart.getSeriesDefaults().setRendererOptions(new RendererOptions().setHighlightMouseDown(true) + .setShowDataLabels(true).setFill(false).setSliceMargin(4).setLineWidth(5)); + + Highlighter h = new Highlighter(); + h.setShow(true); + h.setFormatString("%s, %P"); + h.setTooltipLocation(Location.ne); + h.setShowTooltip(true); + h.setUseAxesFormatters(false); + + pieChart.getChartConfiguration().setLegend(null).setHighlighter(h); + return pieChart; + } } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java index 6db0971..2825f52 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java @@ -27,8 +27,8 @@ import org.apache.openmeetings.util.NullStringer; import org.apache.openmeetings.util.ws.IClusterWsMessage; import org.apache.openmeetings.web.room.RoomPreviewResourceReference; import org.apache.openmeetings.web.room.RoomResourceReference; -import org.apache.openmeetings.web.user.record.PngRecordingResourceReference; import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference; +import org.apache.openmeetings.web.user.record.PngRecordingResourceReference; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.request.resource.ResourceReference; @@ -131,13 +131,10 @@ public class WbWebSocketHelper extends WebSocketHelper { roomId , new JSONObject().put("type", "wb") , null - , (o, c) -> { - return o.put("func", String.format("WbArea.%s(%s);" + , (o, c) -> o.put("func", String.format("WbArea.%s(%s);" , WbAction.createObj.name() , getObjWbJson(wbId, addFileUrl(ruid, file, fi, c)).toString()) - ).toString(); - } - ); + ).toString()); } private static void sendWb(Long roomId, WbAction meth, JSONObject obj, Predicate<Client> check) { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java index a831db2..1bad322 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java @@ -309,6 +309,10 @@ public class AppointmentDialog extends AbstractFormDialog<Appointment> { protected List<? extends OmCalendar> load() { return getCalendarList(); } + + private List<OmCalendar> getCalendarList(){ + return getBean(AppointmentManager.class).getCalendars(getUserId()); + } }, new ChoiceRenderer<OmCalendar>("title", "id") ); @@ -501,10 +505,6 @@ public class AppointmentDialog extends AbstractFormDialog<Appointment> { return result; } - private List<OmCalendar> getCalendarList(){ - return getBean(AppointmentManager.class).getCalendars(getUserId()); - } - @Override protected void onValidate() { if (null != start.getConvertedInput() && null != end.getConvertedInput() && end.getConvertedInput().isBefore(start.getConvertedInput())) { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java index 3a2e19b..55b131a 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java @@ -68,7 +68,10 @@ public class UserSearchPanel extends UserBasePanel { add(new Form<Void>("form") { private static final long serialVersionUID = 1L; - { + + @Override + protected void onInitialize() { + super.onInitialize(); add(new TextField<>("text", new PropertyModel<String>(UserSearchPanel.this, "text"))); add(new TextField<>("offer", new PropertyModel<String>(UserSearchPanel.this, "offer"))); add(new TextField<>("search", new PropertyModel<String>(UserSearchPanel.this, "search"))); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3bd1a68/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java index 4cfd6cf..4921ded 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.java @@ -38,7 +38,6 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.request.resource.ByteArrayResource; import org.apache.wicket.util.io.IOUtils; @@ -48,9 +47,9 @@ public class RoomsPanel extends UserPanel { private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer"); private final WebMarkupContainer details = new WebMarkupContainer("details"); private final ListView<Client> clients; - private IModel<Long> roomID = Model.of((Long)null); - private IModel<String> roomName = Model.of((String)null); - private IModel<String> roomComment = Model.of((String)null); + private final Label roomIdLbl = new Label("roomId", Model.of((Long)null)); + private final Label roomNameLbl = new Label("roomName", Model.of((String)null)); + private final Label roomCommentLbl = new Label("roomComment", Model.of((String)null)); private List<Client> clientsInRoom = null; private Long roomId = 0L; @@ -75,9 +74,7 @@ public class RoomsPanel extends UserPanel { // Users in this Room add(details.setOutputMarkupId(true).setVisible(!rooms.isEmpty())); - details.add(new Label("roomId", roomID)); - details.add(new Label("roomName", roomName)); - details.add(new Label("roomComment", roomComment)); + details.add(roomIdLbl, roomNameLbl, roomCommentLbl); clients = new ListView<Client>("clients", clientsInRoom){ private static final long serialVersionUID = 1L; @@ -120,17 +117,9 @@ public class RoomsPanel extends UserPanel { void updateRoomDetails(AjaxRequestTarget target) { clients.setDefaultModelObject(Application.getRoomClients(roomId)); Room room = getBean(RoomDao.class).get(roomId); - roomID.setObject(room.getId()); - roomName.setObject(room.getName()); - roomComment.setObject(room.getComment()); + roomIdLbl.setDefaultModelObject(room.getId()); + roomNameLbl.setDefaultModelObject(room.getName()); + roomCommentLbl.setDefaultModelObject(room.getComment()); target.add(clientsContainer, details); } - - @Override - protected void onDetach() { - roomID.detach(); - roomName.detach(); - roomComment.detach(); - super.onDetach(); - } }
