Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавление удобного API под интерфейсы #17

Open
ArtemKot4 opened this issue Jan 11, 2025 · 0 comments
Open

Comments

@ArtemKot4
Copy link

Кошак, смотри. Вот представим, у нас есть класс, и называется он Window. Так вот.
Смотри, этот класс должен иметь такой метод, как addElement.
Этот метод принимает в себя некий инстанс от класса Element, вроде в иннере даже был.
Ну т.е. что-то ? super Element
Под каждый элемент нужно по отдельному спец классу:
текст, имэдж, кнопка, фрейм и тд
Этот метод должен добавлять элементы в окно, и возвращать себя же, чтобы можно было цепочку вызовов осуществить.
Важное уточнение, любые числа вроде scale?, x, y, width?, height? и тд должны быть float.
Насчёт font? для текста, ты можешь сделать либо мини класс, как конструктор нужного объекта в представлении джавы, или просто через параметры. И да, учти то, что width и height если не указаны, у элементов всегда рассчитываются сами, это сделай.

Дальше, получение элемента:
твойЮай.getElement<сюда можно дженерик для конкретного типа, чтобы правильно ключи>("название").ключ или тоже самое, но вместо .ключ сделать .getBinding(String name) похожее было в жс иннера где-то видел
твойЮай.getElements() для получения всех элементов
метод getElement может возвращать что-то по типу ...методы и метод setBinding(String name, T value)
Насчёт drawing:
какой-то обобщённый класс, например DrawingElement и так же наследование
твойЮай.setDrawing(где массив, где инстансы DrawingElement)
getDrawing если пригодится, сам придумаешь.

Поскольку сделать не жсный setContent не получится, то попробуй обновлять окно после setBinding.
Насчёт расположения:
тут тоже все сделай float
твойЮай.setLocation(какой-нибудь new WindowLocation().setWidth(float num).setHeight(float num) и тд можешь придумать, или сделать чтобы этот метод принимал все параметры через запятую, но учти, что много параметров просто обязаны быть опциональны)

Насчёт таких деталей как layout:
Это уже из наработок Ильи было, просто убедись, что это работает стабильно.
Все методы вроде forceRefresh, updateScrollDimensions, updateWindowLocation, UpdateWindowPositionAndSize или как-то так, должны быть.

Ты можешь сделать ещё класс доступным к наследованию, чтобы там удобно расположить нужные методы .
Вроде всё, если ещё что-то вспомню, напишу

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant