LeKaitoW / raox

Rao modelling language written in Xbase
http://raox.ru
MIT License
12 stars 26 forks source link

Масштабирование графика через колёсо мышки #51

Closed aurusov closed 7 years ago

aurusov commented 9 years ago

По оси X с зажатой Ctrl По оси Y с зажатой Shift

ViktorRakhmatulin commented 8 years ago

Увяз в изучении библиотеки SWT. Пока не получается найти в package ru.bmstu.rk9.rao.ui.plot; PlotFrame управляющие конструкции для работы с масштабом графиков. ПРодолжаю искать материалы по SWT.

ViktorRakhmatulin commented 8 years ago

В прошлые консультации решал задачи из книги ШИЛДТА "Ява для начинающих",чтобы убедиться в том,что я усваиваю материал. Решил все задачи из первых 9глав и написал все упражнения. Мытарства с swt пока не дают результатов, разбираюсь с паттерном "наблюдатель".

ViktorRakhmatulin commented 8 years ago

в курсе про vogella и стэковерфлоу

ViktorRakhmatulin commented 8 years ago

Сделал приближение/отдаление по обоим осям через прокрутку мыши. Как связать key event и mouse event? Ниже я прикрепил код,который не работает. Тут паттерн наблюдатель приминяется?

ViktorRakhmatulin commented 8 years ago

В конструкторе класса PlotFrame добавил слушателей для созданного мною класса "PlotMouseWheelListener" addMouseWheelListener(new PlotMouseWheelListener()); addKeyListener(new PlotMouseWheelListener()); PlotMouseWheelListener

//Сам класс ,в котором я попробовал связать нажатие на кнопку и прокрутку мыши.

package ru.bmstu.rk9.rao.ui.plot;

import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseWheelListener;

public class PlotMouseWheelListener implements MouseWheelListener, KeyListener { int flagX = 0, flagY = 0; //индикаторы, указывающие на состояние кнопок shift и ctrl

@Override
public void mouseScrolled(MouseEvent e) {
    // TODO Auto-generated method stub

// e.count позволяет определить направление прокрутки мыши System.out.println("Count=" + e.count); // передача переменной plotFrame возможности работать с методами класса PlotFrame на // текущем виджете (графике) PlotFrame plotFrame = (PlotFrame) e.widget; if ((e.count > 0) && (flagX == 1)) { plotFrame.zoomInRange(e.x, e.y); } if ((e.count < 0) && (flagX == 1)) { plotFrame.zoomOutRange(e.x, e.y); }

}

@Override
public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    if (e.keyCode == SWT.SHIFT) {
        flagX = 1;
    }
    if (e.keyCode == SWT.CTRL)
        flagY = 1;
}

@Override
public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub
    if (e.keyCode != SWT.SHIFT) {
        flagX = 0;
    }
    if (e.keyCode != SWT.CTRL)
        flagY = 0;
}

}

ViktorRakhmatulin commented 8 years ago

Мы с Вами голосом обсуждали возможность проведения консультации по скайпу. У меня raox крашится после внесения изменений в класс ,в котором я решаю задачу. Сложно понять, где допускаю ошибки

aurusov commented 8 years ago

Сделай форк, создай бранч, залей код. Это раз. Два - как та получилось, что появился код, который не работает непонятно где ? Значит надо его удалить и добавлять по оной строке с отладкой после каждой. Паттерн используется.

ViktorRakhmatulin commented 8 years ago

Залил код в ветку. Изменения в PlotFrame и в созданном мною классом PlotMouseWheelListener. ПОка не могу понять, как одновременно можно использовать 2 слушателя: Key and mousewheel.

aurusov commented 8 years ago

Поставь пул-реквест

ViktorRakhmatulin commented 8 years ago

Сделал. Задачу решал в старом исходнике (где-то 15 сентября). Вопрос про одновременное использование 2-х слушателей актуален. В том же ПлотФрэйм мышку не получается слушать, можно только клавиатуру.

aurusov commented 8 years ago
  1. Исходники, конечно, надо обновить. Подмерж текущий код в свой форк.
  2. Вообще не понял, что смотреть. Почему ты добавил два новых файла, вместо изменения существующих ?
ViktorRakhmatulin commented 8 years ago

Изменения в PlotFrame в методе (public void keyPressed(KeyEvent e)) и в созданном мною классом PlotMouseWheelListener. Реализовать 2 слушателя в одном классе не получилось( PlotFrame) ,поэтому я имплементил MouseWheelListener в PlotMouseWheelListener. Управлять одним листенером я могу.

Не мерджится. Git тупо не понимает команды.git remote -вообще не распознается. Я думаю,что обновление исходников не повлияет на эту задачу.

aurusov commented 8 years ago

С гитом все пошло не так. Еще раз

  1. сохрани куда-нибудь исходники
  2. сделай форк
  3. сделай бранч от release/current (в своем форке, а не моем)
  4. поставь пул-реквест
ViktorRakhmatulin commented 8 years ago

Задача сделана, ну или очень похожа на сделанную. Я заново скопировал исходники ,поставил самую свежую версию. НЕ совсем понятен пункт 2, я же и так форкнул Ваш репозитарий. Но я сейчас посмотрю в книге. Бранч сделал от ветки мастер( testing)

ViktorRakhmatulin commented 8 years ago

ВРоде сделал как полагается. Наверное ,еще переслались файлы Workbench, так как я положил их в папку

aurusov commented 8 years ago

Задачи не вижу вообще. Вижу два непонятных файла, которые не понимаю как собирать и запускать вместе с raox.

aurusov commented 8 years ago

НЕ совсем понятен пункт 2, я же и так форкнул Ваш репозитарий.

С форком всё не так. Зачем-то сделали бранч в моей репе, а не в совей. К тому же нарушив gitflow. У меня руки чешутся удалить это. Надо реально почитать про гит из wiki, ссылка не просто так первой идет. Забили и пользовались web-мордой гитхаба ? Это объясняет сделанное. Намек понятен ?

ViktorRakhmatulin commented 8 years ago

Кажется, что с залитием файлов все вышло. Спасибо за консультацию в скайпе. git@github.com:ViktorRakhmatulin/RaoX.git

Можно же будет голосом обсудить доработки к этой задаче и постановку задачи курсового до субботы?

aurusov commented 8 years ago

Да, вышло, отписался в реквесте. Не уверен насчет до субботы, посмотрю по обстоятельствам.

aurusov commented 7 years ago

По задаче осталось неблокирующая курсач подзадача. Почему-то не работает ограничение на масштаб (чтобы не уходить в точку, к примеру). Подписчики есть, но текущее значение масштаба в них неадекватное. Подключаюсь, хочу сам посмотреть, на консультации не получилось понять.

aurusov commented 7 years ago

@ViktorRakhmatulin Осознал, что еще не все замечания из пул-реквеста исправлены. Хочется дождаться окончания правки этого файла с вашей стороны.

ViktorRakhmatulin commented 7 years ago

Имеется в виду ограничение масштабирования или что?Я убрал условия со scaleX and scaleY , которые не работали, в последнем коммите.

aurusov commented 7 years ago

Пробегитесь по всем замечаниям и убедитесь, что они исправлены.