in ConstraintLayoutExamples/CycleEditor/src/com/google/androidstudio/motionlayoutcycles/CycleEdit.java [118:257]
public CycleEdit(CycleView cycleView, CycleModel cycleModel, AnimationPanel animationPanel) {
super(new GridBagLayout());
JPanel control = this;
setBorder(new EmptyBorder(5, 10, 10, 20));
myCycleModel = cycleModel;
cycleView.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
myCycleModel.selectClosest(cycleView.last_click);
}
});
BasicArrowButton next = new BasicArrowButton(BasicArrowButton.EAST);
BasicArrowButton prev = new BasicArrowButton(BasicArrowButton.WEST);
myCycleModel.delete = next;
cycleView.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
myCycleModel.selectClosest(cycleView.last_click);
}
});
JTextField number = new JTextField("XX");
number.setPreferredSize(number.getPreferredSize());
GridBagConstraints gbc = new GridBagConstraints();
number.setText("" + myCycleModel.selected);
number.setEditable(false);
gbc.insets = new Insets(10, 5, 0, 0);
next.addActionListener((e) -> {
myCycleModel.changeSelection(+1);
});
prev.addActionListener((e) -> {
myCycleModel.changeSelection(-1);
});
myCycleModel.mKeyCycleNo = number;
gbc.gridy = 0;
gbc.gridx = 2;
gbc.gridwidth = 1;
control.add(new JLabel("KeyCycle:", TRAILING), gbc);
gbc.gridx = 3;
gbc.anchor = GridBagConstraints.EAST;
control.add(prev, gbc);
gbc.gridx++;
control.add(number, gbc);
gbc.gridx++;
gbc.anchor = GridBagConstraints.WEST;
control.add(next, gbc);
gbc.gridy++;
JButton del = new JButton("Delete");
JButton add = new JButton("Add");
myCycleModel.add = add;
myCycleModel.delete = del;
del.addActionListener((e) -> {
myCycleModel.delete();
});
add.addActionListener((e) -> {
myCycleModel.add();
});
gbc.gridwidth = 1;
gbc.gridx = 3;
control.add(add, gbc);
gbc.gridx += 2;
control.add(del, gbc);
gbc.gridy++;
gbc.gridwidth = 3;
JSlider pos = new JSlider();
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.NORTHEAST;
control.add(new JLabel("Pos:", TRAILING), gbc);
gbc.gridx += 3;
gbc.anchor = GridBagConstraints.WEST;
control.add(pos, gbc);
gbc.gridy++;
JSlider period = new JSlider();
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.NORTHEAST;
control.add(new JLabel("Period:", TRAILING), gbc);
gbc.gridx += 3;
gbc.anchor = GridBagConstraints.WEST;
control.add(period, gbc);
gbc.gridy++;
JSlider amp = new JSlider();
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.NORTHEAST;
attrName = new JComboBox<>(CycleView.MainAttribute.ShortNames);
attrName.setSelectedIndex(myCycleModel.mAttrIndex);
attrName.addActionListener(e -> {
myCycleModel.setAttr(attrName.getSelectedIndex());
updateTabName(myCycleModel.getAttName());
animationPanel.setMode();
});
control.add(attrName, gbc);
gbc.gridx += 3;
gbc.anchor = GridBagConstraints.WEST;
control.add(amp, gbc);
gbc.gridy++;
JSlider off = new JSlider();
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.NORTHEAST;
control.add(new JLabel("Offset:", TRAILING), gbc);
gbc.gridx += 3;
gbc.anchor = GridBagConstraints.WEST;
control.add(off, gbc);
gbc.gridy++;
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.EAST;
control.add(new JLabel("WaveType:", TRAILING), gbc);
JComboBox<String> mode = new JComboBox<>(myCycleModel.waveShapeName);
gbc.gridx += 3;
gbc.anchor = GridBagConstraints.WEST;
control.add(mode, gbc);
gbc.gridy++;
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.NORTHEAST;
control.add(new JLabel("Target:", TRAILING), gbc);
gbc.gridx += 3;
gbc.anchor = GridBagConstraints.WEST;
JTextField target = new JTextField("XXXXXXXXXXXXXXXXXXXXX");
target.setPreferredSize(target.getPreferredSize());
target.setText("button");
control.add(target, gbc);
myCycleModel.setTarget(target);
myCycleModel.setUIElements(pos, period, amp, off, mode);
myCycleModel.setCycle(cycleView);
}