Search in sources :

Example 1 with Attribute

use of com.github.jakz.romlib.data.game.attributes.Attribute in project rom-manager by Jakz.

the class InfoPanel method buildPopupMenu.

public void buildPopupMenu() {
    customPopup.removeAll();
    JMenu embedded = new JMenu("Embedded");
    customPopup.add(embedded);
    JMenu custom = new JMenu("Custom");
    customPopup.add(custom);
    Attribute[] cattributes = new Attribute[] { GameAttribute.GENRE, GameAttribute.TAG, GameAttribute.EXPORT_TITLE };
    MyGameSetFeatures helper = set.helper();
    Settings settings = helper.settings();
    List<Attribute> enabledAttribs = settings.getRomAttributes();
    Stream<Attribute> eattributes = Arrays.stream(set.getSupportedAttributes());
    Runnable menuItemPostAction = () -> {
        buildMainLayout();
        buildFields();
        pFields.revalidate();
        updateFields(game);
        buildPopupMenu();
    };
    for (Attribute cattrib : cattributes) {
        JMenuItem item = null;
        if (enabledAttribs.contains(cattrib)) {
            item = new JMenuItem("Remove \'" + cattrib.getCaption() + "\'");
            item.addActionListener(e -> {
                settings.getRomAttributes().remove(cattrib);
                set.stream().forEach(r -> r.clearCustomAttribute(cattrib));
                menuItemPostAction.run();
            });
        } else {
            item = new JMenuItem("Add \'" + cattrib.getCaption() + "\'");
            item.addActionListener(e -> {
                settings.getRomAttributes().add(cattrib);
                menuItemPostAction.run();
            });
        }
        custom.add(item);
    }
    eattributes.forEach(eattrib -> {
        JMenuItem item = null;
        if (enabledAttribs.contains(eattrib)) {
            item = new JMenuItem("Hide \'" + eattrib.getCaption() + "\'");
            item.addActionListener(e -> {
                settings.getRomAttributes().remove(eattrib);
                menuItemPostAction.run();
            });
        } else {
            item = new JMenuItem("Show \'" + eattrib.getCaption() + "\'");
            item.addActionListener(e -> {
                List<Attribute> newAttributes = Arrays.stream(set.getSupportedAttributes()).filter(ee -> enabledAttribs.contains(ee) || ee == eattrib).collect(Collectors.toList());
                enabledAttribs.stream().filter(ee -> !Arrays.asList(set.getSupportedAttributes()).contains(ee)).forEach(newAttributes::add);
                enabledAttribs.clear();
                enabledAttribs.addAll(newAttributes);
                menuItemPostAction.run();
            });
        }
        embedded.add(item);
    });
}
Also used : Color(java.awt.Color) Arrays(java.util.Arrays) URL(java.net.URL) JToggleButton(javax.swing.JToggleButton) MyGameSetFeatures(jack.rm.data.romset.MyGameSetFeatures) GameSet(com.github.jakz.romlib.data.set.GameSet) MouseAdapter(java.awt.event.MouseAdapter) RomDownloaderPlugin(jack.rm.plugins.types.RomDownloaderPlugin) BorderLayout(java.awt.BorderLayout) Feature(com.github.jakz.romlib.data.set.Feature) Icon(com.github.jakz.romlib.ui.Icon) Image(java.awt.Image) BufferedImage(java.awt.image.BufferedImage) Set(java.util.Set) JMenu(javax.swing.JMenu) BorderFactory(javax.swing.BorderFactory) Collectors(java.util.stream.Collectors) Box(javax.swing.Box) Dimension(java.awt.Dimension) List(java.util.List) Stream(java.util.stream.Stream) Graphics(java.awt.Graphics) JPanel(javax.swing.JPanel) ActionListener(java.awt.event.ActionListener) GameAttribute(com.github.jakz.romlib.data.game.attributes.GameAttribute) Asset(com.github.jakz.romlib.data.assets.Asset) Game(com.github.jakz.romlib.data.game.Game) Attribute(com.github.jakz.romlib.data.game.attributes.Attribute) SwingConstants(javax.swing.SwingConstants) SwingUtilities(javax.swing.SwingUtilities) JMenuItem(javax.swing.JMenuItem) RomAttribute(com.github.jakz.romlib.data.game.attributes.RomAttribute) ImageIcon(javax.swing.ImageIcon) AssetData(com.github.jakz.romlib.data.assets.AssetData) BoxLayout(javax.swing.BoxLayout) Mediator(jack.rm.gui.Mediator) Desktop(java.awt.Desktop) JButton(javax.swing.JButton) MigLayout(net.miginfocom.swing.MigLayout) JPopupMenu(javax.swing.JPopupMenu) PluginRealType(jack.rm.plugins.PluginRealType) GameStatus(com.github.jakz.romlib.data.game.GameStatus) ActionEvent(java.awt.event.ActionEvent) MouseEvent(java.awt.event.MouseEvent) JScrollPane(javax.swing.JScrollPane) JLabel(javax.swing.JLabel) AssetManager(com.github.jakz.romlib.data.assets.AssetManager) Main(jack.rm.Main) GameSetManager(jack.rm.data.romset.GameSetManager) Settings(jack.rm.data.romset.Settings) GameAttribute(com.github.jakz.romlib.data.game.attributes.GameAttribute) Attribute(com.github.jakz.romlib.data.game.attributes.Attribute) RomAttribute(com.github.jakz.romlib.data.game.attributes.RomAttribute) MyGameSetFeatures(jack.rm.data.romset.MyGameSetFeatures) JMenuItem(javax.swing.JMenuItem) JMenu(javax.swing.JMenu) Settings(jack.rm.data.romset.Settings)

Example 2 with Attribute

use of com.github.jakz.romlib.data.game.attributes.Attribute in project rom-manager by Jakz.

the class OfflineListProviderPlugin method buildRomSets.

@Override
public GameSet[] buildRomSets(List<DatParserPlugin> datParsers) {
    DatParserPlugin parser = this.findDatParser(datParsers, "offline-list");
    List<GameSet> sets = new ArrayList<>();
    try {
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", new GBASaveParserOL());
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.GBA, KnownProviders.OFFLINE_LIST.derive("", "", "Replouf66", new Provider.Source("http://offlinelistgba.free.fr/tool/ReleaseList/gba_OL_0.7.1.zip")), datParser, format, GBA_ATTRIBUTES, new AssetManager(GBA_ASSETS, new URL("http://offlinelistgba.free.fr/imgs/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", new GBASaveParserAS());
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.GBA, KnownProviders.ADVAN_SCENE.derive("pure", "", "AdvanScene", new Provider.Source("http://www.advanscene.com/offline/datas/ADVANsCEne_GBA.zip")), datParser, format, GBA_ATTRIBUTES, new AssetManager(GBA_ASSETS, new URL("http://www.advanscene.com/offline/imgs/ADVANsCEne_GBA/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", (SaveParser) (s -> GameSave.NULL));
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            final Asset[] PSP_ASSETS = { new Asset.Image(Paths.get("title"), new Dimension(208, 181 * 2)), new Asset.Image(Paths.get("gameplay"), new Dimension(320 * 2, 181 * 2)) };
            final Attribute[] attributes = { GameAttribute.TITLE, GameAttribute.NUMBER, GameAttribute.SIZE, GameAttribute.PUBLISHER, GameAttribute.LOCATION, GameAttribute.LANGUAGE, GameAttribute.GROUP, GameAttribute.COMMENT };
            sets.add(new GameSet(Platforms.PSP, KnownProviders.ADVAN_SCENE.derive("", "", "AdvanScene", new Provider.Source("http://www.advanscene.com/offline/datas/ADVANsCEne_PSP.zip")), datParser, format, attributes, new AssetManager(PSP_ASSETS, new URL("http://www.advanscene.com/offline/imgs/ADVANsCEne_PSP/")), s -> new MyGameSetFeatures(s)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", new NDSSaveParser());
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.NDS, KnownProviders.ADVAN_SCENE.derive("collection", "", "AdvanScene", new Provider.Source("http://www.advanscene.com/offline/datas/ADVANsCEne_NDS.zip")), datParser, format, GBA_ATTRIBUTES, new AssetManager(NDS_ASSETS, new URL("http://www.advanscene.com/offline/imgs/ADVANsCEne_NDS/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        /* Nintendo 3DS */
        {
            final Asset[] _3DS_ASSETS = { new Asset.Image(Paths.get("title"), new Dimension(268, 480)), new Asset.Image(Paths.get("gameplay"), new Dimension(400, 480)) };
            final Attribute[] _3DS_ATTRIBUTES = { GameAttribute.TITLE, GameAttribute.NUMBER, GameAttribute.SIZE, GameAttribute.PUBLISHER, GameAttribute.GROUP, GameAttribute.SAVE_TYPE, GameAttribute.LOCATION, GameAttribute.LANGUAGE, GameAttribute.COMMENT };
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", (SaveParser) s -> null);
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms._3DS, KnownProviders.ADVAN_SCENE.derive("", "", "AdvanScene", new Provider.Source("http://www.advanscene.com/offline/datas/ADVANsCEne_3DS.zip")), datParser, format, _3DS_ATTRIBUTES, new AssetManager(_3DS_ASSETS, new URL("http://www.advanscene.com/offline/imgs/ADVANsCEne_3DS/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", (SaveParser) (r -> null));
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.GBC, KnownProviders.NO_INTRO.derive("", "", "Replouf66", new Provider.Source("http://nointro.free.fr/datas/Official%20No-Intro%20Nintendo%20Gameboy%20Color.zip")), datParser, format, GB_ATTRIBUTES, new AssetManager(GB_ASSETS, new URL("http://nointro.free.fr/imgs/Official%20No-Intro%20Nintendo%20Gameboy%20Color/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", (SaveParser) (r -> null));
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.GB, KnownProviders.NO_INTRO.derive("", "", "MadBob", new Provider.Source("http://nointro.free.fr/datas/Official%20No-Intro%20Nintendo%20Gameboy.zip")), datParser, format, GB_ATTRIBUTES, new AssetManager(GB_ASSETS, new URL("http://nointro.free.fr/imgs/Official%20No-Intro%20Nintendo%20Gameboy/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", (SaveParser) (r -> null));
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.NES, KnownProviders.NO_INTRO.derive("", "", "Zepman", new Provider.Source("http://nointro.free.fr/datas/Official%20No-Intro%20Nintendo%20NES%20-%20Famicom.zip")), datParser, format, NES_ATTRIBUTES, new AssetManager(GB_ASSETS, new URL("http://nointro.free.fr/imgs/Official%20No-Intro%20Nintendo%20NES%20-%20Famicom/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
            sets.add(new GameSet(Platforms.NES, KnownProviders.OFFLINE_LIST.derive("", "", "Zepman", new Provider.Source("http://nesofflinelist.free.fr/dat/nes_OL.zip")), datParser, format, NES_ATTRIBUTES, new AssetManager(NES_ASSETS, new URL("http://nesofflinelist.free.fr/imgs/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        {
            Map<String, Object> args = new HashMap<>();
            args.put("save-parser", (SaveParser) (r -> null));
            DataSupplier datParser = parser.buildDatLoader("offline-list", args);
            DatFormat format = datParser.getFormat();
            sets.add(new GameSet(Platforms.LYNX, KnownProviders.NO_INTRO.derive("", "", "Atari Lynx", new Provider.Source("http://nointro.free.fr/datas/Official%20No-Intro%20Atari%20Lynx.zip")), datParser, format, NES_ATTRIBUTES, new AssetManager(LYNX_ASSETS, new URL("http://nointro.free.fr/imgs/Official%20No-Intro%20Atari%20Lynx/")), s -> new MyGameSetFeatures(s, Feature.FINITE_SIZE_SET)));
        }
        return sets.toArray(new GameSet[sets.size()]);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    return null;
}
Also used : Arrays(java.util.Arrays) SaveParser(com.github.jakz.romlib.parsers.SaveParser) URL(java.net.URL) GameAttribute(com.github.jakz.romlib.data.game.attributes.GameAttribute) DatFormat(com.github.jakz.romlib.data.set.DatFormat) Asset(com.github.jakz.romlib.data.assets.Asset) Game(com.github.jakz.romlib.data.game.Game) DataSupplier(com.github.jakz.romlib.data.set.DataSupplier) HashMap(java.util.HashMap) MyGameSetFeatures(jack.rm.data.romset.MyGameSetFeatures) Attribute(com.github.jakz.romlib.data.game.attributes.Attribute) ProviderPlugin(jack.rm.plugins.types.ProviderPlugin) Platforms(com.github.jakz.romlib.data.platforms.Platforms) ArrayList(java.util.ArrayList) GameSet(com.github.jakz.romlib.data.set.GameSet) Map(java.util.Map) DatParserPlugin(jack.rm.plugins.types.DatParserPlugin) Feature(com.github.jakz.romlib.data.set.Feature) NDS(com.github.jakz.romlib.data.platforms.NDS) MalformedURLException(java.net.MalformedURLException) Version(com.github.jakz.romlib.data.game.Version) DecimalFormat(java.text.DecimalFormat) UnknownFormatConversionException(java.util.UnknownFormatConversionException) Dimension(java.awt.Dimension) List(java.util.List) Platform(com.github.jakz.romlib.data.platforms.Platform) Paths(java.nio.file.Paths) GameSave(com.github.jakz.romlib.data.game.GameSave) Provider(com.github.jakz.romlib.data.set.Provider) GBA(com.github.jakz.romlib.data.platforms.GBA) RomSize(com.github.jakz.romlib.data.game.RomSize) MalformedURLException(java.net.MalformedURLException) ArrayList(java.util.ArrayList) Dimension(java.awt.Dimension) URL(java.net.URL) SaveParser(com.github.jakz.romlib.parsers.SaveParser) DataSupplier(com.github.jakz.romlib.data.set.DataSupplier) MyGameSetFeatures(jack.rm.data.romset.MyGameSetFeatures) DatFormat(com.github.jakz.romlib.data.set.DatFormat) HashMap(java.util.HashMap) Map(java.util.Map) DatParserPlugin(jack.rm.plugins.types.DatParserPlugin) GameSet(com.github.jakz.romlib.data.set.GameSet)

Example 3 with Attribute

use of com.github.jakz.romlib.data.game.attributes.Attribute in project rom-manager by Jakz.

the class InfoPanel method buildFields.

void buildFields() {
    MyGameSetFeatures helper = set.helper();
    Settings settings = helper.settings();
    List<Attribute> attributes = settings.getRomAttributes();
    fields = attributes.stream().map(a -> buildField(a, true)).collect(Collectors.toList());
    /* add file name and path attributes only if there is a single rom per game */
    if (set.hasFeature(Feature.SINGLE_ROM_PER_GAME)) {
        // TODO: hardcoded for now
        fields.add(buildField(RomAttribute.CRC, false));
        fields.add(buildField(GameAttribute.PATH, false));
    }
    pFields.removeAll();
    pFields.setLayout(new MigLayout());
    for (AttributeField field : fields) {
        pFields.add(field.title, "span 4");
        if (field.deleteButton != null) {
            pFields.add(field.getComponent(), "span 8, growx");
            pFields.add(field.deleteButton, "wrap");
        } else
            pFields.add(field.getComponent(), "span 9, growx, wrap");
    }
    pFields.add(addCustomFieldButton);
    pFields.add(editButton);
    pFields.add(resetCustomFieldsButton);
}
Also used : GameAttribute(com.github.jakz.romlib.data.game.attributes.GameAttribute) Attribute(com.github.jakz.romlib.data.game.attributes.Attribute) RomAttribute(com.github.jakz.romlib.data.game.attributes.RomAttribute) MyGameSetFeatures(jack.rm.data.romset.MyGameSetFeatures) MigLayout(net.miginfocom.swing.MigLayout) Settings(jack.rm.data.romset.Settings)

Aggregations

Attribute (com.github.jakz.romlib.data.game.attributes.Attribute)3 GameAttribute (com.github.jakz.romlib.data.game.attributes.GameAttribute)3 MyGameSetFeatures (jack.rm.data.romset.MyGameSetFeatures)3 Asset (com.github.jakz.romlib.data.assets.Asset)2 Game (com.github.jakz.romlib.data.game.Game)2 RomAttribute (com.github.jakz.romlib.data.game.attributes.RomAttribute)2 Feature (com.github.jakz.romlib.data.set.Feature)2 GameSet (com.github.jakz.romlib.data.set.GameSet)2 Settings (jack.rm.data.romset.Settings)2 Dimension (java.awt.Dimension)2 URL (java.net.URL)2 Arrays (java.util.Arrays)2 List (java.util.List)2 AssetData (com.github.jakz.romlib.data.assets.AssetData)1 AssetManager (com.github.jakz.romlib.data.assets.AssetManager)1 GameSave (com.github.jakz.romlib.data.game.GameSave)1 GameStatus (com.github.jakz.romlib.data.game.GameStatus)1 RomSize (com.github.jakz.romlib.data.game.RomSize)1 Version (com.github.jakz.romlib.data.game.Version)1 GBA (com.github.jakz.romlib.data.platforms.GBA)1