Forum Message UI Improvement (Thesis Board #3470) #61
@ -14,20 +14,8 @@ public abstract class AbstractReadStatePanel extends Panel {
|
|||||||
public static final String TOGGLE = "toggle";
|
public static final String TOGGLE = "toggle";
|
||||||
static final String ICON = "icon";
|
static final String ICON = "icon";
|
||||||
|
|
||||||
public enum ShowReadStateTooltip {
|
|
||||||
ENABLED,
|
|
||||||
DISABLED
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ShowReadStateTooltip showReadStateTooltip;
|
|
||||||
|
|
||||||
public AbstractReadStatePanel(final String id) {
|
public AbstractReadStatePanel(final String id) {
|
||||||
this(id, ShowReadStateTooltip.DISABLED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AbstractReadStatePanel(final String id, final ShowReadStateTooltip showReadStateTooltip) {
|
|
||||||
super(id);
|
super(id);
|
||||||
this.showReadStateTooltip = showReadStateTooltip;
|
|
||||||
|
|
||||||
Component icon = new UpdatingImage(ICON);
|
Component icon = new UpdatingImage(ICON);
|
||||||
icon.setOutputMarkupId(true);
|
icon.setOutputMarkupId(true);
|
||||||
@ -59,10 +47,6 @@ public abstract class AbstractReadStatePanel extends Panel {
|
|||||||
super.onComponentTag(tag);
|
super.onComponentTag(tag);
|
||||||
String state = isRead() ? "read" : "unread";
|
String state = isRead() ? "read" : "unread";
|
||||||
tag.append("class", state, " ");
|
tag.append("class", state, " ");
|
||||||
|
|
||||||
if (showReadStateTooltip == ShowReadStateTooltip.ENABLED && !isRead()) {
|
|
||||||
tag.put("title", getString("unread.msg"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +0,0 @@
|
|||||||
unread.msg=There are unread messages.
|
|
@ -42,9 +42,8 @@
|
|||||||
|
|
||||||
<table class="table table-striped table-hover" wicket:id="dp"></table>
|
<table class="table table-striped table-hover" wicket:id="dp"></table>
|
||||||
|
|
||||||
<!-- todo: reconsider name of this id, parentMarkupId, needs improvement. -->
|
<wicket:fragment wicket:id="readStateColumnMarkupId">
|
||||||
<wicket:fragment wicket:id="parentMarkupId">
|
<span wicket:id="flag"></span>
|
||||||
<wicket:container wicket:id="flag"></wicket:container>
|
|
||||||
<wicket:container wicket:id="counter"></wicket:container>
|
<wicket:container wicket:id="counter"></wicket:container>
|
||||||
</wicket:fragment>
|
</wicket:fragment>
|
||||||
</wicket:panel>
|
</wicket:panel>
|
||||||
|
@ -4,6 +4,7 @@ import jakarta.inject.Inject;
|
|||||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||||
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
|
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
|
||||||
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
|
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
|
||||||
|
import org.apache.wicket.AttributeModifier;
|
||||||
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
|
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
|
||||||
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
|
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
|
||||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
|
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
|
||||||
@ -200,12 +201,19 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void populateItem(Item<ICellPopulator<Project>> item, String id, IModel<Project> projectModel) {
|
public void populateItem(Item<ICellPopulator<Project>> item, String id, IModel<Project> projectModel) {
|
||||||
/*
|
// Since table cell only can contain one item, we use Wicket Fragment here. It will contains two components,
|
||||||
item.add(new AbstractReadStatePanel(id, AbstractReadStatePanel.ShowReadStateTooltip.ENABLED) {
|
// one for flag, one for unread messages counter.
|
||||||
|
|
||||||
|
Fragment fragment = new Fragment(id, "readStateColumnMarkupId", SupervisorMyProjectsPanel.this);
|
||||||
|
|
||||||
|
long msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(),
|
||||||
|
SciProSession.get().getUser());
|
||||||
|
boolean isRead = msgCount == 0;
|
||||||
|
|
||||||
|
AbstractReadStatePanel readStatePanel = new AbstractReadStatePanel("flag") {
|
||||||
@Override
|
@Override
|
||||||
protected boolean isRead() {
|
protected boolean isRead() {
|
||||||
return !projectForumService.hasUnreadThreads(projectModel.getObject(),
|
return isRead;
|
||||||
SciProSession.get().getUser());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -213,36 +221,13 @@ public class SupervisorMyProjectsPanel extends Panel {
|
|||||||
setResponsePage(SupervisorThreadedForumPage.class,
|
setResponsePage(SupervisorThreadedForumPage.class,
|
||||||
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
*/
|
|
||||||
|
|
||||||
// WebMarkupContainer container = new WebMarkupContainer(id);
|
if (!isRead) {
|
||||||
// container.setOutputMarkupId(true);
|
readStatePanel.add(new AttributeModifier("title", getString("unread.msg")));
|
||||||
/*
|
}
|
||||||
container
|
|
||||||
*/
|
|
||||||
//container.add(new NumberOfMessagesPanel("counter"));
|
|
||||||
|
|
||||||
//item.add(container);
|
fragment.add(readStatePanel);
|
||||||
|
|
||||||
//boolean hasUnreadThreads = projectForumService.hasUnreadThreads(projectModel.getObject(), SciProSession.get().getUser());
|
|
||||||
long msgCount = projectForumService.getUnreadThreadsCount(projectModel.getObject(), SciProSession.get().getUser());
|
|
||||||
|
|
||||||
// todo: reconsider name of this id, needs to be improved.
|
|
||||||
Fragment fragment = new Fragment(id, "parentMarkupId", SupervisorMyProjectsPanel.this);
|
|
||||||
|
|
||||||
fragment.add(new AbstractReadStatePanel("flag", AbstractReadStatePanel.ShowReadStateTooltip.ENABLED) {
|
|
||||||
@Override
|
|
||||||
protected boolean isRead() {
|
|
||||||
return msgCount == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onFlagClick(AjaxRequestTarget target) {
|
|
||||||
setResponsePage(SupervisorThreadedForumPage.class,
|
|
||||||
SupervisorThreadedForumPage.getPageParameters(projectModel.getObject()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
fragment.add(new NumberOfMessagesPanel("counter") {
|
fragment.add(new NumberOfMessagesPanel("counter") {
|
||||||
@Override
|
@Override
|
||||||
|
@ -12,3 +12,5 @@ ProjectStatus.COMPLETED= Completed
|
|||||||
|
|
||||||
SupervisorProjectNoteDisplay.COMPACT=Compact
|
SupervisorProjectNoteDisplay.COMPACT=Compact
|
||||||
SupervisorProjectNoteDisplay.FULL=Full
|
SupervisorProjectNoteDisplay.FULL=Full
|
||||||
|
|
||||||
|
unread.msg=There are unread messages.
|
Loading…
x
Reference in New Issue
Block a user