Added several improvements, changes and bug fixes
This commit is contained in:
parent
f42c6333a6
commit
df75aeb966
@ -20,7 +20,7 @@ public class ActivityHeader extends JPanel {
|
||||
public static final Dimension PREFERRED_SIZE4 = new Dimension(40, 40);
|
||||
public static final Dimension PREFERRED_SIZE2 = new Dimension(100, 40);
|
||||
|
||||
private TTextField sortkey = new TTextField("Sortkey");
|
||||
//private TTextField sortkey = new TTextField("Sortkey");
|
||||
private TTextField name = new TTextField("Name");
|
||||
private TTextField comment = new TTextField("Comment");
|
||||
private TTextField ticket = new TTextField("Ticket");
|
||||
@ -35,7 +35,7 @@ public class ActivityHeader extends JPanel {
|
||||
public ActivityHeader() {
|
||||
this.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
|
||||
|
||||
add(sortkey);
|
||||
//add(sortkey);
|
||||
add(name);
|
||||
add(comment);
|
||||
add(ticket);
|
||||
@ -47,7 +47,7 @@ public class ActivityHeader extends JPanel {
|
||||
add(done);
|
||||
add(todo);
|
||||
|
||||
sortkey.setPreferredSize(PREFERRED_SIZE1);
|
||||
//sortkey.setPreferredSize(PREFERRED_SIZE1);
|
||||
name.setPreferredSize(PREFERRED_SIZE);
|
||||
comment.setPreferredSize(PREFERRED_SIZE);
|
||||
ticket.setPreferredSize(PREFERRED_SIZE1);
|
||||
@ -59,7 +59,7 @@ public class ActivityHeader extends JPanel {
|
||||
done.setPreferredSize(PREFERRED_SIZE3);
|
||||
todo.setPreferredSize(PREFERRED_SIZE3);
|
||||
|
||||
sortkey.setEditable(false);
|
||||
//sortkey.setEditable(false);
|
||||
name.setEditable(false);
|
||||
comment.setEditable(false);
|
||||
ticket.setEditable(false);
|
||||
@ -71,7 +71,7 @@ public class ActivityHeader extends JPanel {
|
||||
done.setEditable(false);
|
||||
todo.setEditable(false);
|
||||
|
||||
sortkey.setFont(FONT);
|
||||
//sortkey.setFont(FONT);
|
||||
name.setFont(FONT);
|
||||
comment.setFont(FONT);
|
||||
ticket.setFont(FONT);
|
||||
@ -83,7 +83,7 @@ public class ActivityHeader extends JPanel {
|
||||
done.setFont(FONT);
|
||||
todo.setFont(FONT);
|
||||
|
||||
sortkey.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
||||
//sortkey.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
||||
name.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
||||
comment.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
||||
ticket.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
|
||||
@ -98,5 +98,6 @@ public class ActivityHeader extends JPanel {
|
||||
//this.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 1));
|
||||
setAlignmentX(LEFT_ALIGNMENT);
|
||||
|
||||
//sortkey.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import java.awt.FlowLayout;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.Clipboard;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.util.List;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
/**
|
||||
@ -93,7 +94,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
|
||||
@Getter
|
||||
private final Activity activity;
|
||||
|
||||
private final TTextField sortkey;
|
||||
//private final TTextField sortkey;
|
||||
private final TTextField name;
|
||||
private final TTextField comment;
|
||||
private final TTextField ticket;
|
||||
@ -121,7 +122,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
|
||||
{
|
||||
this.subject = new TTextFieldForActivityPanel("", "subject");
|
||||
this.totalComment = new TTextFieldForActivityPanel("", "totalComment");
|
||||
this.sortkey = new TTextFieldForActivityPanel("1", "sortkey", (a, r)->a.setSortkey(Integer.parseInt(r)), true);
|
||||
//this.sortkey = new TTextFieldForActivityPanel("1", "sortkey", (a, r)->a.setSortkey(Integer.parseInt(r)), true);
|
||||
this.name = new TTextFieldForActivityPanel("", "name", (a, r)->{a.setName(r);getSubject().setText(a.createSubject());}, false);
|
||||
this.comment = new TTextFieldForActivityPanel("", "comment", (a, r)->{a.setComment(r);getTotalComment().setText(a.createTotalComment());}, false);
|
||||
this.ticket = new TTextFieldForActivityPanel("", "ticket",
|
||||
@ -143,7 +144,7 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
|
||||
}
|
||||
|
||||
this.dayPanel = dayPanel;
|
||||
add(sortkey);
|
||||
//add(sortkey);
|
||||
add(name);
|
||||
add(comment);
|
||||
add(ticket);
|
||||
@ -154,23 +155,27 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
|
||||
add(totalComment);
|
||||
add(today);
|
||||
add(remains);
|
||||
//sortkey.setVisible(false);
|
||||
name.setHorizontalAlignment(JTextField.LEFT);
|
||||
comment.setHorizontalAlignment(JTextField.LEFT);
|
||||
ticket.setHorizontalAlignment(JTextField.LEFT);
|
||||
|
||||
JButton copyButton = new SmallTButton("Copy");
|
||||
JButton deleteButton = new SmallTButton("Delete");
|
||||
JButton moveButton = new SmallTButton("Move");
|
||||
JButton moveThisButton = new SmallTButton("Move this");
|
||||
JButton moveBeforeButton = new SmallTButton("Move before");
|
||||
|
||||
add(copyButton);
|
||||
add(deleteButton);
|
||||
add(moveButton);
|
||||
add(moveThisButton);
|
||||
add(moveBeforeButton);
|
||||
|
||||
copyButton.setFont(SwingUtils.SMALL_FONT);
|
||||
deleteButton.setFont(SwingUtils.SMALL_FONT);
|
||||
moveButton.setFont(SwingUtils.SMALL_FONT);
|
||||
moveThisButton.setFont(SwingUtils.SMALL_FONT);
|
||||
moveBeforeButton.setFont(SwingUtils.SMALL_FONT);
|
||||
|
||||
sortkey.setPreferredSize(PREFERRED_SIZE1);
|
||||
//sortkey.setPreferredSize(PREFERRED_SIZE1);
|
||||
name.setPreferredSize(PREFERRED_SIZE);
|
||||
comment.setPreferredSize(PREFERRED_SIZE);
|
||||
ticket.setPreferredSize(PREFERRED_SIZE1);
|
||||
@ -184,10 +189,11 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
|
||||
|
||||
copyButton.setPreferredSize(PREFERRED_SIZE4);
|
||||
deleteButton.setPreferredSize(PREFERRED_SIZE4);
|
||||
moveButton.setPreferredSize(PREFERRED_SIZE4);
|
||||
moveThisButton.setPreferredSize(PREFERRED_SIZE1);
|
||||
moveBeforeButton.setPreferredSize(PREFERRED_SIZE1);
|
||||
this.setPreferredSize(new Dimension(getWidth(), 40));
|
||||
|
||||
sortkey.setText(String.valueOf(activity.getSortkey()));
|
||||
//sortkey.setText(String.valueOf(activity.getSortkey()));
|
||||
name.setText(activity.getName());
|
||||
comment.setText(activity.getComment());
|
||||
ticket.setText(activity.getTicket());
|
||||
@ -218,16 +224,74 @@ public class ActivityPanel extends JPanel implements Comparable<ActivityPanel> {
|
||||
copyButton.addActionListener(e -> {
|
||||
activityRepository.putToClipboard(this.activity);
|
||||
});
|
||||
moveButton.addActionListener(e-> {
|
||||
moveThisButton.addActionListener(e-> {
|
||||
this.dayPanel.markActivityPanelToBeMoved(this);
|
||||
});
|
||||
|
||||
moveBeforeButton.addActionListener(e-> {
|
||||
if(dayPanel.getMarkActivityPanelToBeMoved() == null) {
|
||||
//nothing to do
|
||||
return;
|
||||
}
|
||||
List<Activity> list = dayPanel.getActivities();
|
||||
Activity activityToBeMoved = activityRepository.read(dayPanel.getMarkActivityPanelToBeMoved().getActivity().getId());
|
||||
Activity activityTarget = activityRepository.read(activity.getId());
|
||||
int activityTargetSortkey = activityTarget.getSortkey();
|
||||
int newSortKey = activityToBeMoved.getSortkey();
|
||||
for(int i = 0; i < list.size(); i++) {
|
||||
if(activityToBeMoved.getSortkey() == activityTarget.getSortkey()) {
|
||||
//nothing to do
|
||||
break;
|
||||
}
|
||||
if(i >= 1 && activityToBeMoved.getSortkey() == activityTarget.getSortkey()) {
|
||||
//nothing to do
|
||||
break;
|
||||
}
|
||||
if(list.get(i).getId().equals(activityTarget.getId())) {
|
||||
Activity activityBefore = i == 0 ? null : list.get(i - 1);
|
||||
if(activityBefore != null && activityBefore.getId().equals(activityToBeMoved.getId())) {
|
||||
//nothing to do
|
||||
break;
|
||||
}
|
||||
int activityBeforeSortkey = activityBefore == null ? activityTargetSortkey : activityBefore.getSortkey();
|
||||
int start = activityBeforeSortkey + 1;
|
||||
int end = activityTargetSortkey - 1;
|
||||
if(start > end) {
|
||||
start = end;
|
||||
}
|
||||
if(start == end) {
|
||||
newSortKey = end;
|
||||
break;
|
||||
}
|
||||
newSortKey = start + (end - start) / 2;
|
||||
if(newSortKey > activityTargetSortkey) {
|
||||
newSortKey = activityTargetSortkey;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
int oldSortkey = activityToBeMoved.getSortkey();
|
||||
if(oldSortkey != newSortKey) {
|
||||
activityToBeMoved.setSortkey(newSortKey);
|
||||
}
|
||||
ActivityPanel activityPanelForActivity =
|
||||
dayPanel.getActivityPanelForActivity(activityToBeMoved);
|
||||
activityPanelForActivity.getActivity().setSortkey(newSortKey);
|
||||
// activityPanelForActivity.getSortkeyTTextField().setText(
|
||||
// String.valueOf(newSortKey));
|
||||
activityRepository.update(activityToBeMoved);
|
||||
dayPanel.sortActivityPanels();
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(ActivityPanel o) {
|
||||
return this.getActivity().compareTo(o.getActivity());
|
||||
}
|
||||
public TTextField getSortkeyTTextField() {
|
||||
return sortkey;
|
||||
}
|
||||
// public TTextField getSortkeyTTextField() {
|
||||
// return sortkey;
|
||||
// }
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.nanoboot.utils.timecalc.swing.common;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.nanoboot.utils.timecalc.entity.Activity;
|
||||
import org.nanoboot.utils.timecalc.persistence.api.ActivityRepositoryApi;
|
||||
import org.nanoboot.utils.timecalc.utils.common.NumberFormats;
|
||||
@ -44,66 +45,9 @@ public class DayPanel extends JPanel {
|
||||
private JButton loadButton;
|
||||
private JScrollPane scrollPane;
|
||||
private JPanel panelInsideScrollPane;
|
||||
@Getter
|
||||
private ActivityPanel markActivityPanelToBeMoved = null;
|
||||
|
||||
class MoveHereButton extends JButton {
|
||||
public MoveHereButton(String activityId) {
|
||||
setText("Move here");
|
||||
setMaximumSize(MAXIMUM_SIZE_2);
|
||||
putClientProperty(FOR_ACTIVITY_ID, activityId);
|
||||
setVisible(true);
|
||||
addActionListener(e-> {
|
||||
List<Activity> list = getActivities();
|
||||
Activity activityToBeMoved = activityRepository.read(markActivityPanelToBeMoved.getActivity().getId());
|
||||
Activity activityTarget = activityRepository.read(activityId);
|
||||
int activityTargetSortkey = activityTarget.getSortkey();
|
||||
int newSortKey = activityToBeMoved.getSortkey();
|
||||
for(int i = 0; i < list.size(); i++) {
|
||||
if(activityToBeMoved.getSortkey() == activityTarget.getSortkey()) {
|
||||
//nothing to do
|
||||
break;
|
||||
}
|
||||
if(i >= 1 && activityToBeMoved.getSortkey() == activityTarget.getSortkey()) {
|
||||
//nothing to do
|
||||
break;
|
||||
}
|
||||
if(list.get(i).getId().equals(activityTarget.getId())) {
|
||||
Activity activityBefore = i == 0 ? null : list.get(i - 1);
|
||||
int activityBeforeSortkey = activityBefore == null ? activityTargetSortkey : activityBefore.getSortkey();
|
||||
int start = activityBeforeSortkey + 1;
|
||||
int end = activityTargetSortkey - 1;
|
||||
if(start > end) {
|
||||
start = end;
|
||||
}
|
||||
if(start == end) {
|
||||
newSortKey = end;
|
||||
break;
|
||||
}
|
||||
newSortKey = start + (end - start) / 2;
|
||||
if(newSortKey > activityTargetSortkey) {
|
||||
newSortKey = activityTargetSortkey;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
activityToBeMoved.setSortkey(newSortKey);
|
||||
ActivityPanel activityPanelForActivity =
|
||||
getActivityPanelForActivity(activityToBeMoved);
|
||||
activityPanelForActivity.getActivity().setSortkey(newSortKey);
|
||||
activityPanelForActivity.getSortkeyTTextField().setText(
|
||||
String.valueOf(newSortKey));
|
||||
activityRepository.update(activityToBeMoved);
|
||||
sortActivityPanels();
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
public String getActivityId() {
|
||||
return (String) getClientProperty(FOR_ACTIVITY_ID);
|
||||
}
|
||||
}
|
||||
|
||||
public DayPanel(String yearIn, String monthIn, String dayIn,
|
||||
ActivityRepositoryApi activityRepository) {
|
||||
super();
|
||||
@ -190,11 +134,6 @@ public class DayPanel extends JPanel {
|
||||
comp.setMaximumSize(new Dimension(1300, 40));
|
||||
add(comp);
|
||||
activityRepository.create(newActivity);
|
||||
if(this.markActivityPanelToBeMoved != null) {
|
||||
panelInsideScrollPane.add(new MoveHereButton(newActivity.getId()));
|
||||
} else {
|
||||
//comp.setBorder(BorderFactory.createEmptyBorder(0, 0, 20, 0));
|
||||
}
|
||||
panelInsideScrollPane.add(comp);
|
||||
|
||||
revalidate();
|
||||
@ -212,11 +151,7 @@ public class DayPanel extends JPanel {
|
||||
comp.setMaximumSize(new Dimension(1200, 40));
|
||||
add(comp);
|
||||
activityRepository.create(newActivity);
|
||||
if(this.markActivityPanelToBeMoved != null) {
|
||||
panelInsideScrollPane.add(new MoveHereButton(newActivity.getId()));
|
||||
} else {
|
||||
//comp.setBorder(BorderFactory.createEmptyBorder(20, 0, 0, 0));
|
||||
}
|
||||
|
||||
panelInsideScrollPane.add(comp);
|
||||
|
||||
revalidate();
|
||||
@ -296,11 +231,7 @@ public class DayPanel extends JPanel {
|
||||
.stream(panelInsideScrollPane.getComponents())
|
||||
.filter(c-> c instanceof ActivityPanel).filter(c-> !((ActivityPanel)c).isDeleted()).forEach(e-> list.add((ActivityPanel) e));
|
||||
Collections.sort(list);
|
||||
Arrays
|
||||
.stream(panelInsideScrollPane.getComponents())
|
||||
.filter(c-> {return (c instanceof MoveHereButton);}).forEach(c-> panelInsideScrollPane.remove(c));
|
||||
|
||||
//.filter(c -> getClientProperty( FOR_ACTIVITY_ID) != null)
|
||||
for(ActivityPanel ap:list) {
|
||||
panelInsideScrollPane.remove(ap);
|
||||
}
|
||||
@ -324,7 +255,7 @@ public class DayPanel extends JPanel {
|
||||
sortkey = sortkey + sortkeySpace;
|
||||
ap.getActivity().setSortkey(sortkey);
|
||||
activityRepository.update(ap.getActivity());
|
||||
ap.getSortkeyTTextField().setText(String.valueOf(sortkey));
|
||||
// ap.getSortkeyTTextField().setText(String.valueOf(sortkey));
|
||||
|
||||
}
|
||||
}
|
||||
@ -340,16 +271,7 @@ public class DayPanel extends JPanel {
|
||||
TTime todoTTime =
|
||||
TTime.ofMilliseconds((int) (todo * 60d * 60d * 1000d));
|
||||
ap.remains.setText(todoTTime.toString().substring(0,todoTTime.isNegative() ? 6 : 5));
|
||||
{
|
||||
if(this.markActivityPanelToBeMoved != null) {
|
||||
MoveHereButton mhb =
|
||||
new MoveHereButton(ap.getActivity().getId());
|
||||
panelInsideScrollPane.add(mhb);
|
||||
} else {
|
||||
// Component mhb = new MoveHereButton(ap.getActivity().getId());
|
||||
// panelInsideScrollPane.add(mhb);
|
||||
}
|
||||
}
|
||||
|
||||
panelInsideScrollPane.add(ap);
|
||||
ap.setVisible(false);
|
||||
ap.setVisible(true);
|
||||
@ -361,19 +283,9 @@ public class DayPanel extends JPanel {
|
||||
}
|
||||
|
||||
public void markActivityPanelToBeMoved(ActivityPanel activityPanel) {
|
||||
boolean moveHereButtonsExist = Arrays
|
||||
.stream(panelInsideScrollPane.getComponents())
|
||||
.filter(c-> {return (c instanceof MoveHereButton);}).findFirst().isPresent();
|
||||
boolean deletion = this.markActivityPanelToBeMoved == activityPanel;
|
||||
boolean enabling = this.markActivityPanelToBeMoved == null && activityPanel != null;
|
||||
this.markActivityPanelToBeMoved = deletion ? null : activityPanel;
|
||||
if(moveHereButtonsExist && deletion) {
|
||||
sortActivityPanels();
|
||||
}
|
||||
if(!moveHereButtonsExist && enabling) {
|
||||
sortActivityPanels();
|
||||
}
|
||||
|
||||
this.markActivityPanelToBeMoved = activityPanel;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user