Code Monkey home page Code Monkey logo

javabeamstudio's Introduction

orekyuu

Java Engineer

📚Skills

  • Language
    • Java
    • Kotlin
    • Ruby
  • Framework
    • Spring
    • Quarkus
    • Ruby on Rails

🧳Career

📧 Contact

javabeamstudio's People

Contributors

nokok avatar orekyuu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

javabeamstudio's Issues

Serviceアノテーションの追加

JavatterAPIではLookupを使ってインターフェイスに紐付けされた実装の取得や注入をしているが、Serviceとして提供するためのインターフェイスかを調べる方法がない。
関係無いインターフェイスでLookupしないようにするために@serviceアノテーションを作成する。

機能

Lookup時にServiceではないクラスを指定された時LookupExceptionをスローする
JavadocへServiceであることを明記する

UIの変更

RT、お気に入り、リプライなどのボタンを画像に変更

java.lang.NoClassDefFoundError

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: com/sun/javafx/Utils
at org.controlsfx.tools.Platform.getCurrentPlatform(Platform.java:65)
at org.controlsfx.tools.Platform.(Platform.java:41)
at org.controlsfx.control.ButtonBar$3.(ButtonBar.java:369)
at org.controlsfx.control.ButtonBar.(ButtonBar.java:369)
at org.controlsfx.control.ButtonBar.(ButtonBar.java:355)
at org.controlsfx.control.action.ActionUtils.createButtonBar(ActionUtils.java:429)
at impl.org.controlsfx.skin.NotificationBar.updatePane(NotificationBar.java:164)
at impl.org.controlsfx.skin.NotificationBar.(NotificationBar.java:160)
at org.controlsfx.control.Notifications$NotificationPopupHandler$1.(Notifications.java:332)
at org.controlsfx.control.Notifications$NotificationPopupHandler.show(Notifications.java:332)
at org.controlsfx.control.Notifications$NotificationPopupHandler.show(Notifications.java:317)
at org.controlsfx.control.Notifications.show(Notifications.java:263)
at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.sun.javafx.Utils
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 19 more

StringIndexOutOfBoundsException

Exception in thread "JavaFX Application Thread" java.lang.StringIndexOutOfBoundsException: String index out of range: -22
at java.lang.String.substring(String.java:1955)
at net.orekyuu.javatter.core.control.TweetText.addTextEntity(TweetText.java:124)
at net.orekyuu.javatter.core.control.TweetText.updateText(TweetText.java:112)
at net.orekyuu.javatter.core.control.TweetText.lambda$tweetProperty$29(TweetText.java:143)
at net.orekyuu.javatter.core.control.TweetText$$Lambda$319/2002011287.changed(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:105)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
at net.orekyuu.javatter.core.control.TweetText.setTweet(TweetText.java:150)
at net.orekyuu.javatter.core.control.TweetCellController.onChange(TweetCellController.java:68)
at net.orekyuu.javatter.core.control.TweetCellController$$Lambda$315/1659528110.changed(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:105)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.access$000(ObjectPropertyBase.java:51)
at javafx.beans.property.ObjectPropertyBase$Listener.invalidated(ObjectPropertyBase.java:233)
at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:137)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ObjectPropertyBase.fireValueChangedEvent(ObjectPropertyBase.java:105)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
at javafx.beans.property.ObjectProperty.setValue(ObjectProperty.java:69)
at net.orekyuu.javatter.core.control.TweetCell.updateItem(TweetCell.java:38)
at net.orekyuu.javatter.core.control.TweetCell.updateItem(TweetCell.java:15)
at javafx.scene.control.ListCell.updateItem(ListCell.java:471)
at javafx.scene.control.ListCell.lambda$new$163(ListCell.java:167)
at javafx.scene.control.ListCell$$Lambda$310/1990104953.onChanged(Unknown Source)
at javafx.collections.WeakListChangeListener.onChanged(WeakListChangeListener.java:88)
at com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:329)
at com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:73)
at javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:233)
at javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
at javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
at javafx.collections.ObservableListBase.endChange(ObservableListBase.java:205)
at javafx.collections.ModifiableObservableListBase.add(ModifiableObservableListBase.java:155)
at net.orekyuu.javatter.core.column.HomeTimeLineColumn.lambda$onStatus$6(HomeTimeLineColumn.java:82)
at net.orekyuu.javatter.core.column.HomeTimeLineColumn$$Lambda$307/798283172.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$170(PlatformImpl.java:295)
at com.sun.javafx.application.PlatformImpl$$Lambda$50/1495074952.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(PlatformImpl.java:294)
at com.sun.javafx.application.PlatformImpl$$Lambda$49/1692488255.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$38/314821582.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

CompletableFutureを返すTwitterAPIを利用するメソッドを追加

今はfollow(User)とfollowAsync(User)のように2つメソッドを用意しているが、CompletableFuture follow(User)のようにすることでシンプルにできる。
削除することは出来ないので現在のメソッドを非推奨にしてこれを追加するのが良い。

プラグインスコープでデータを保存できるAPI

データをプラグインごとに保存できるようにするAPI
Serialize可能なクラスを保存できるようにする

下のような形が良い?
@ Inject
PluginDataStorage storage;
storage.find(PLUGIN_ID, KEY);
storage.save(PLUGIN_ID, KEY, DATA);
storage.delete(PLUGIN_ID, KEY);

OnPostInitのタイミングの変更

呼び出されるタイミングの変更
OnInit: DIの設定が終わった直後
OnPostInit: アカウントの設定が終了し、ウィンドウが表示された後

RTの表示を変更

RT元アイコンの表示とテキストをRT元のものを使うように変更

バージョン情報が開けない

javafx.fxml.LoadException: xxx/layout/about.fxml
at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2605)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2583)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2445)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2413)
at net.orekyuu.javatter.core.controller.CurrentController.openAbout(CurrentController.java:226)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1767)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$341(ContextMenuContent.java:1358)
at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$351/731396389.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3758)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$304/2129332258.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:927)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
at com.sun.glass.ui.win.WinApplication$$Lambda$38/1780450367.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: net.orekyuu.javatter.api.service.ServiceException: net.orekyuu.javatter.api.service.EnvironmentService
at net.orekyuu.javatter.core.JavaBeamStudio$1.lookup(JavaBeamStudio.java:139)
at net.orekyuu.javatter.api.util.lookup.Lookup.lookup(Lookup.java:44)
at net.orekyuu.javatter.core.controller.AboutController.initialize(AboutController.java:24)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
... 59 more

アクション追加APIを作成

プラグインごとにメニューバーにアクションをまとめるようにする。
ショートカットからもアクションを実行できるように、設定でショートカットを変更可能にする。

通知APIの作成

通知にはテキスト、タイトル、画像、音、色、タイプ、クリック時のアクションを指定できる。
多分ビルダーを使ってやるのが良い

ユーザーストリームのリスナの保持方法を強参照に変更

強参照になるので、リスナを削除するメソッドの追加とColumnやTabのインターフェイスにonCloseのような後処理用メソッドが必要になる。
普通にメソッドを追加するとこれまでのコードがコンパイルエラーになるため、defaultでメソッドを追加する

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.