LINUX.ORG.RU

Java'чка крашенная

 ,


0

1

Продолжаю пилить охранную софтинку.

В гуях ни разу не силён, хотелось бы cпросить совета что делать с левой частью, основную в целом привёл в порядок (в прошлый раз троллили мотифом :-D )

Что имеем:

  • бегает на малине 4 под чистым ксоргом без ДЕ/ВМ, позволяет растащиться на 2 монитора одним окном
  • чистый swing
  • все панельки это jinternalframe’ы ибо ВМ нет
  • темка родной кросс-платформенный нимбус, который входит в jre больше десяти лет, долго и нудно крашенный под темный. Изначально он и так не плох, но скучно (с). Десяток самописанных painter’ов, и несколько сильно переделанных контролов, включая особо замороченный для заголовка окон, дизайн заголовка спёрт в adwaita-dark :-D но основной смысл пока не реализован - изначально туда пихались кнопки управления, но практика показала что места слишком мало, а вот кнопка, которая позволяет взять contentpane и перекинуть его из jinternalframe в обычный jframe прям напрашивается, если программка запущена на ПК с ВМ - тогда можно отлепить окно панели от внутреннего окна приложения и таскать его куда душе угодно (привет rawtherapee, я мечтаю о такой кнопке уже вечность для окна с фоточкой).
    Бонусом пришлось писать ограничение кадров (частоты перерисовки) при перемещении окон.

В целом:

  • Под расбери 3/4 в 3840x1080 работает нормально, в 4К тормозит при перемещении/масштабировании панелей но вполне юзабельно, основную функцию выполняет без нареканий
  • Под виндой летает аки конь (привет 2Д ускорение аппаратное, тут недавно как-раз обсуждалось)

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

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

п.с.2. в прошлый раз спрашивали что видит оператор - оператор видит план (специально попробовал вместить кусочек, хотя планы тут из сильно старой версии, от лубочного svg принято решение отказаться а новый велосипед пока не готов), левую панель и нижнюю панель с событиями, потом будет еще одна правая панелька с активными печальками. Остальные окна оператор не видит, они для инженера. И да, на первый взгляд для инженера всё немного переусложнено но он а) учился же не зря б) это всё трогают только когда совсем печаль какая-то, обычно включил-забыл.

>>> Просмотр (2624x1016, 1584 Kb)

★★★★

Проверено: Shaman007 ()
Последнее исправление: rukez (всего исправлений: 5)

хотелось бы cпросить совета что делать с левой частью

Это там, где «Склад», «Южная сторона» и прочее? Сделать цвета не такими насыщенными (такие больше для светлой темы подошли бы), да шрифт покрупнее.

Одна из проблем - квадратики далеко не всегда такие крупные, когда зон много то они превращаются в мелкие совсем.

Вынести в отдельное окно/выдвигающуюся панель слева (подвёл курсор к левому краю окна, нажал на кнопку – и поверх всего выдвигается панель со «складами»).

Korchevatel ★★★★★
()
Ответ на: комментарий от Korchevatel

Это там, где «Склад», «Южная сторона» и прочее?

да

Сделать цвета не такими насыщенными (такие больше для светлой темы подошли бы)

изначально были светлее намного, но издалека не очень очевидно когда смотришь на большой панели в цупе - подправил на компромиссный вариант - норма/охрана светлые, тревога/печаль/разрыв - темные.

да шрифт покрупнее.

трабл в том что одни инженеры обзывают зоны «1,2,3», а другие «выход на площадь имени сергея сергича мухожука», притом это тут зон мало, на практике они часто не влезают в 4к экран при высоте в 32 пикселя и в три столбца. надо будет поиграться с динамическим размером шрифта но чую будет ой.

Вынести в отдельное окно/выдвигающуюся панель слева (подвёл курсор к левому краю окна, нажал на кнопку – и поверх всего выдвигается панель со «складами»).

не реально - это основная рабочая панель. т.е. слева в этой панельки живут все зоны периметра и оператор смотрит прежде всего туда - если там есть что-то не синее/зеленое то дальше он уже смотрит на план (если не помнит где эта площадь мухожука или нужна инфа точнее чем просто местоположение) или в события (туда мало кто смотрит, это своего рода терминал, по этому надо будет колхозить новые события, с блэкджеком и только важные :-) )

rukez ★★★★
() автор топика
Ответ на: комментарий от mittorn

Ударжание… Удорожание?

удержание - т.е. сколько будет удерживаться тревога перед автоматическим завершением.
пока да, много косяков по текстам и местами по цветам (например на скрине косячный цвет шрифта у выделенного элемента таблицы), но правим-правим :-)

rukez ★★★★
() автор топика

Не думал заюзать какую-нибудь платформу, навроде Netbeans Platform? Там есть панели, тулбары, многооконность из коробки. Плюс система плагинов и автообновление. Я много подобных софтин видел на базе нетбинс.

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

Не думал заюзать какую-нибудь платформу, навроде Netbeans Platform? Там есть панели, тулбары, многооконность из коробки

Не, родной явовский свинг на самом деле офигенно мощный и удобный (когда вкуришь и смиришься). В нем из коробки то-же есть панели, тулбары, многооконность и т.п., но есть нюансы (с):

  • многооконность, как и положенно mdi, внутри своего основного окна (точнее внутри области JDesktop) - это не удобно если мониторов много и есть ВМ, за сим тут два режима работы - на чистых jinternalframe, когда ВМ нет и всем рулит JDesktop, либо по выбору переход в JFrame’ы, когда мониторов много и есть ВМ. Пока можно сохранять только раскладки основных окон, раскладки суб-окон сохранять нельзя, но это в планах.
    Самописанная часть поверх jif делалась исключительно из-за того что я мне было чуток лень разбираться как переделать заголовок окна не грохая его целиком, бонусом я не стал делать z-ordering по клику и соотв. теперь окна фиксируются по порядку вызова, а z-индекс меняется только при нажатии на кнопки вызова сверху - это удобно когда надо иметь большую панельку настроек и поверх терминал или лог событий без панели задач - практика показала что её игнорят 99% пользователей.

Из не свинга пробовал:

  • JavaFX - чумачечая штуковина, на которой можно прям вау-вау. Но именно в тот момент (8u65) ей выпилили ARM и соотв. поддержку разбери :-) сейчас работает но вникать уже лень ибо все-же программная отрисовка покорила моё сердце своей беспроблемностью на кросс-платформе.
  • SWT - … не, оно конечно шустрее работает … но пле, оно умудрялось падать на ровном месте и еще хочет бинарники под каждую платформу, ну его нафиг.
  • lanterna - очень мне хотелось текстовую мордочку, что-бы понимать чо-каг когда по ssh подключаешься, но увы, опять-же ей поломали совместимость в процессе перехода от версии к версии и я немного подзабил, пока в не шибко активном поиске замены.
  • смотрел еще чуток на интеллиж’шную платформу но закрыл почти сразу - я каждый раз краснею когда надо вызвать reflections и потом долго думаю как-бы его убрать, а там парни по ходу кроме него ничего и не пробовали.

нетбинс канешн фуфла не делал (с), но реально, это всё переусложнения примитивнейшей задачи - отрисовать кнопки и текст, чем проще это реализовано, тем меньше шансов что это будет глючить, а глючить тут совсем низя :-(

rukez ★★★★
() автор топика
Ответ на: комментарий от rukez

нетбинс канешн фуфла не делал (с), но реально, это всё переусложнения примитивнейшей задачи - отрисовать кнопки и текст, чем проще это реализовано, тем меньше шансов что это будет глючить, а глючить тут совсем низя :-(

Да, для простых задач нетбинс будет черезчур переусложненным. Но у тебя-то уже прога не простая. У тебя и окна, и панели, и переключение контекста.

Плюс платформы нетбинса в том, что не надо свое управление workspace писать. Там очень хорошо сделаны контекстные панели и окна. Ну и банальные, но нужные вещи: сохранение/загрузка настроек, инсталятор, обновления, система плагинов.

Я, просто, сейчас разгребаю последствия самописного варианта комплексного интерфейса и вижу как оно бывает, когда изначально простой проект вырождается в франкенштейна с собственными реализациями типичных задач.

смотрел еще чуток на интеллиж’шную платформу

Их платформа предназначена для построения кастомных IDE, там всё вокруг редактора кода крутится. А вот Eclipse и Netbeans более универсальные.

lanterna - очень мне хотелось текстовую мордочку

Jexer вроде норм, даже картинки через Sixel умеет.

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

У тебя и окна, и панели, и переключение контекста.

Дык в обычном swing это всё есть

Там очень хорошо сделаны контекстные панели и окна

Ммм … у меня же свой контекст - т.е. всёравно руками делать

Ну и банальные, но нужные вещи: сохранение/загрузка настроек

Нинужно (с). Всмысле тут клиент-сервер, настройки на сервере лежат в своём формате бдшки, шифрованы и резервированы. На клиенте есть своих чуток но, опять-же, в яве есть встроенное чудесное решение для properties :-)

инсталятор

не нужен :-) всмысле это человек :-) инженер-исталлятор.
а софтина полностью портабельна, более того и клиент и сервер в одном jar’нике и вообще она вся из одного файла :-)

обновления

по требованию. с обязательным включением резерва на время процедуры. тут-жеж это-ж, если поломается то беда

система плагинов.

тут api просто наружу есть через обычный json

Я, просто, сейчас разгребаю последствия самописного варианта комплексного интерфейса и вижу как оно бывает, когда изначально простой проект вырождается в франкенштейна с собственными реализациями типичных задач.

прально, по этому тут просто голый свинг, если отключить вообще всё накостыленное, то оно будет работать как обычный нимбус кроме всего пары вещей (jif->jf, ограничние к/с и местами захардкоженные цвета могут глаза резать). кстати в конфиге клиента есть встроенная отключалка, позволяющая переключиться на нимбус/а-ля мотиф/это :-)

фишка явы именно в том, что всё уже сделано до нас, главное понять как внедрять свои хотелки «по правильному» - если ты берешь и крячишь своей painter, то он вообще никак не трогает ни логику работы компонента ни его базовые задачи, в любой момент ты можешь его передернуть назад или заменить. если ты делаешь override и сохраняешь работоспособный super, то у тебя, опять-же, полностью работоспособна вся прежняя логика и функционал. главное понять в каком именно месте пихать свои хотелки :-)

Их платформа предназначена для построения кастомных IDE, там всё вокруг редактора кода крутится. А вот Eclipse и Netbeans более универсальные.

я просто в целом сильно против включения библиотек на ровном месте ради пары тыков или «сделать то-же, что есть в платформе, но не так как в платформе». тут из внешних либ только:

  • vlcj как обёртка для видео библиотеки vlc
  • jssc с моими микропатчами как набор готовых бинарников для последовательных портов, но его потом в сильно отдаленных планах махнуть на своё для win/lin платформ
  • gson для json’а, но на 20% он уже выкинут в пользу самописанного ввиду адовой тупизны из-за reflections в тех местах, где они (лично мне) не нужны т.к. классы типизированы
  • пара либ для генерации самоподписанных ssl сертификатов, у кого полноценные тем они не нужны.
rukez ★★★★
() автор топика

Крутотень!

По поводу квадратиков - не хочешь сделать это списком с галками? не в два ряда и не такие жирные.

bvn13 ★★★★★
()

АААА!!! всё красное!!! Ты скажи куда тебе там бонбы кидать? Где там твой Тополь? :)

ChekPuk ★★★
()

В гуях ни разу не силён

у нас говорят так: поймать бы тех, кто это писал, и заставить это использовать:) вот делай выводы) посиди денек на смене и за оператора, и за инженера)

в редакторе планов - все кнопки сверху вряд. в прошлом веке изобрели такую вещь «меню». одну кнопку нажал, из списка выбрал.

слева большие квадраты - это тыкательный интерфейс или алармы? квадраты большие, галочки маленькие.

вообще для примера можно взять интерфейс заббикса (zabbix). они тоже ничего не понимали, когда начинали. но за 10 лет кое-чему научились. зачем наступать на те же грабли?

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 3)

mqtt не умеет, тормозяву требует, куда мир катится

bernd ★★★★★
()
Ответ на: комментарий от rukez

слева в этой панельки живут все зоны периметра и оператор смотрит прежде всего туда - если там есть что-то не синее/зеленое то дальше он уже смотрит на план

А нужно ли отображать нормальное состояние? Быть может лучше показывать только зоны с тревогой и складывать сообщения о них в журнал (вдруг оператор отвернулся)? После реакции на тревогу (глянул камеру, разоброался в чём дело), зона опять скрывается из видимости.

lv ★★
()

хотелось бы cпросить совета что делать с левой частью

Сделать чекбоксы списком, ибо огромные цветастые панели ни разу тут себя не оправдывают. Если так хочется цветовой кодировки, то перед названием сущности можно поставить кругляк нужного цвета.

Так же стоит сгруппировать общие сущности (Зоны периметр, Склады, Проезды и т.д.)

Тем самым, кстати, нижняя часть с кнопками визуально отделится от верхней и уже будет не такая каша.

З.Ы.: Не нужно пытаться заполнить всё свободного пространство функциональными элементами, «воздух» в интерфейсе тоже важен.

neocrust ★★★★★
()

чистый swing

Темный Numbus - это прикольно :)

X-Pilot ★★★★★
()

А как на твой охраняемый объект можно было бы проникнуть, в обход всех датчиков? :P

Harald ★★★★★
()
Ответ на: комментарий от EXL

Кстати, вместо устаревшего Nimbus’а можно заюзать FlatLaf

Ну, такое… Лично меня вся эта «плоскота» везде уже порядком утомила… Старая тема IntelliJ IDEA была лучше (которая не со скругленными тонкими и прозрачными скроллбарами, а с чуть более объемными, а-ля Synthetica)…

X-Pilot ★★★★★
()
Ответ на: комментарий от bvn13

По поводу квадратиков - не хочешь сделать это списком с галками? не в два ряда и не такие жирные

А это и есть список с галками, кол-во рядов выбирается в настройках для каждой вкладки своё персонально - иногда удобно в один столбец, иногда в 3-4 (если зон много и они по номерам идут)

rukez ★★★★
() автор топика
Ответ на: комментарий от EXL

Кстати, вместо устаревшего Nimbus’а можно заюзать FlatLaf: https://github.com/JFormDesigner/FlatLaf Выглядит как то, что используется в IDEA. Весит немножко.

Есть три нюанса:

  • много чужого, плохо предсказуемого кода
  • не очень очевидно как это будет выглядеть с кнопками с текстом вместо иконок (тут оператору надо четко видеть название кнопки, на которую он нажимает и которая описана в руководстве)
  • кнопки не особо выделяются - это вот проблема моих квадратных кнопок - свинговый градиент реально помогает выделить кнопку на панели визуально. В прошлых версиях у меня кнопки вообще были «вырвиглаз цвета логотипа газпрома» - оно хорошо так заметно сразу :-)
rukez ★★★★
() автор топика
Ответ на: комментарий от Harald

можно было бы консольный текстовый интерфейс запилить и не пердолиться

У Явы проблемы с консольной псевдографикой, правда тут подсказали замену лантерны но пока не юзал ещё :-(

rukez ★★★★
() автор топика
Ответ на: комментарий от crypt

у нас говорят так: поймать бы тех, кто это писал, и заставить это использовать:) вот делай выводы) посиди денек на смене и за оператора, и за инженера)

Да, регулярно катаюсь на объекты чтоб посмотреть что удобно что нет, но есть много разномастного:

  • где-то болтаются 4к плазмы а где-то только тафбук с убогим экраном на 720 строк
  • где-то объект построен на зональных датчиках и из всего 20-30, а где-то на точечных и их 5-10 тысяч
  • где-то объект побит всего на 10 зон, а где-то клиент хочет видеть каждые три метра из своих 30 километров (10 тысяч зон, боль, гнев и страдание, при условии что камеры и радары верифицируют один фиг не точнее 30 метров, а охране ехать минимум 2-3 минуты, за которые «клиент» пробегает под километр

слева большие квадраты - это тыкательный интерфейс или алармы? квадраты большие, галочки маленькие.

Квадрат цветом показывает статус зоны, галка показывает выбран ли квадрат для действий кнопками под ним - т.е. красный квадрат = тревога, если галка стоит, то нажатие «снять» снимет зону с охраны. Галки чекаются по всей площади квадрата, в саму галку попадать не обязательно :-)

в редакторе планов - все кнопки сверху вряд. в прошлом веке изобрели такую вещь «меню». одну кнопку нажал, из списка выбрал.

Там много кнопок «зажималок» - пока зажата одни действия при клике на плане, когда отжата - другие. В меню из не пихнуть т.к. они должны быть видны в зажатом состоянии, иначе оператор тупо испохабит себе план тыкая по нему и создавая новые объекты, вместо выбора

rukez ★★★★
() автор топика
Последнее исправление: rukez (всего исправлений: 1)
Ответ на: комментарий от lv

А нужно ли отображать нормальное состояние? Быть может лучше показывать только зоны с тревогой и складывать сообщения о них в журнал (вдруг оператор отвернулся)? После реакции на тревогу (глянул камеру, разоброался в чём дело), зона опять скрывается из видимости.

Нормальное состояние показывать нужно - например снять/поставить ради для.
Но описанный алгоритм как-раз в работе - я это подсмотрел в трассире - мне понравилось, будет панелькой справа или доп вкладкой в левой части - пока не игрался ещё с расположением

rukez ★★★★
() автор топика
Ответ на: комментарий от neocrust

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

Они тут как лампы индикации - по сути основной элемент интерфейса оператора.

Если так хочется цветовой кодировки, то перед названием сущности можно поставить кругляк нужного цвета.

Смысл квадрата - бросаться в глаза всегда, а не когда в него смотрят - это же не интересная штука, показывающая котиков на ютубе, это унылая лампа, в которую оператор пялится всю смену, думая как-бы сбежать от жены к гальке на выходные и не поплатиться за это яичками :-)

Так же стоит сгруппировать общие сущности (Зоны периметр, Склады, Проезды и т.д.)

Порядок зон формирует клиент, у каждого своя логика - кто-то группирует по смыслу, кто-то по плану (по часовой стрелке от кпп например), кто-то по номерам в проекте - там много вариантов, главное не менять в процессе, когда операторы привыкли

rukez ★★★★
() автор топика
Последнее исправление: rukez (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

В одно рыло пишешь охранную систему для предприятия?

Ну не только предприятия- на ней 5 аэропортов собраны, включая Шереметьево :-) Правда и пилю далеко не первый год

rukez ★★★★
() автор топика
Ответ на: комментарий от EXL

вот это ты годноту сейчас принес! два чаю тебе, друг!

bvn13 ★★★★★
()
Ответ на: комментарий от rukez

может, ему тогда цвет окна менять, чтобы оператор знал, в каком режиме. это интуитивнее, чем надписи. и я говорю, мне знаком софт для мониторинга типа заббикса, но будешь ли ты в него вникать не знаю.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от rukez

Нормальное состояние показывать нужно - например снять/поставить ради для.

Не знаю какой там рабочий процесс, но на сколько я понимаю, экранное пространство дорого. Как и внимание оператора. То есть постоянно иметь перед глазами нормальное состояние ему ни к чему. Ну а для ручного изменения состояния можно и выпадающий список с зонами какой-нибудь сделать.

lv ★★
()
Последнее исправление: lv (всего исправлений: 1)

Выглядит масштабно. Круто, чо!

CryNet ★★★★★
()
Ответ на: комментарий от rukez

Ну не только предприятия- на ней 5 аэропортов собраны, включая Шереметьево :-)

зопейсал в блокнотик, отписался в центр :)

Harald ★★★★★
()
Ответ на: комментарий от rukez

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

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.