Search in sources :

Example 1 with FileView

use of javax.swing.filechooser.FileView in project jphp by jphp-compiler.

the class UIFileChooser method onFileView.

@Signature({ @Arg(value = "field"), @Arg(value = "callback", type = HintType.CALLABLE, optional = @Optional("null")) })
public Memory onFileView(final Environment env, final Memory... args) {
    final FileView oldFileView = component.getFileView();
    final Invoker invoker = Invoker.valueOf(env, null, args[1]);
    final String field = args[0].toString().toLowerCase();
    component.setFileView(new FileView() {

        @Override
        public String getName(File f) {
            if (invoker != null && field.equals("name")) {
                Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
                if (!r.isNull())
                    return r.toString();
            }
            return oldFileView == null ? super.getName(f) : oldFileView.getName(f);
        }

        @Override
        public String getDescription(File f) {
            if (invoker != null && field.equals("description")) {
                Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
                if (!r.isNull())
                    return r.toString();
            }
            return oldFileView == null ? super.getDescription(f) : oldFileView.getDescription(f);
        }

        @Override
        public String getTypeDescription(File f) {
            return super.getTypeDescription(f);
        }

        @Override
        public Icon getIcon(File f) {
            if (invoker != null && field.equals("icon")) {
                Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
                if (r.instanceOf(WrapImage.class))
                    return r.toObject(WrapImage.class).getImageIcon();
            }
            return oldFileView == null ? super.getIcon(f) : oldFileView.getIcon(f);
        }

        @Override
        public Boolean isTraversable(File f) {
            if (invoker != null && field.equals("traversable")) {
                Memory r = invoker.callNoThrow(new ObjectMemory(new FileObject(env, f)));
                if (!r.isNull())
                    return r.toBoolean();
            }
            return oldFileView == null ? super.isTraversable(f) : oldFileView.isTraversable(f);
        }
    });
    return Memory.NULL;
}
Also used : FileView(javax.swing.filechooser.FileView) Invoker(php.runtime.invoke.Invoker) Memory(php.runtime.Memory) FileObject(php.runtime.ext.core.classes.stream.FileObject) WrapImage(org.develnext.jphp.swing.classes.WrapImage) File(java.io.File)

Aggregations

File (java.io.File)1 FileView (javax.swing.filechooser.FileView)1 WrapImage (org.develnext.jphp.swing.classes.WrapImage)1 Memory (php.runtime.Memory)1 FileObject (php.runtime.ext.core.classes.stream.FileObject)1 Invoker (php.runtime.invoke.Invoker)1